Nginx 反向代理的配置及问题解决,nginx反向代理配置
Nginx 反向代理的配置及问题解决,nginx反向代理配置
安装及定位配置文件
Ubuntu安装用 apt-get install nginx
命令
用apt-get安装完之后,配置文件一般在\etc\nginx
可以通过 cat /etc/init.d/nginx
查看nginx的区体配置文件路径。
# Try to extract nginx pidfile
PID=$(cat /etc/nginx/nginx.conf | grep -Ev ‘^\s*#’ | awk ‘BEGIN { RS=”[;{}]” } { if ($1 == “pid”) print $2 }’ | head -n1)
if [ -z “$PID” ]; then
PID=/run/nginx.pid
由/etc/init.d/nginx
中的PID字段可知配置文件在/etc/nginx/nginx.conf
,即和一般情况无异
一般来说不建议直接修改/etc/nginx/nginx.conf
文件,在该文件下可以发现它会引用其它文件夹下的文件内容。
include /etc/nginx/modules-enabled/*.conf;
http {
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
也就是说只要将自定义的而又满足配置格式的文件放于适合的目录下,就可以完成对Nginx的配置。
反向代理的配置
配置需求:向外监听80
端口,反向代理给服务器gunicorn
所用的5000
端口
配置的内容如下
server {
listen 80;
location / {
proxy_pass http://localhost:5000;
}
}
由于考虑到后继可能的改动,我用git同步配置文件并用 ln -s
软链接至配置目录
上述内容配置于/etc/nginx/sites-enabled/web
,web是我的配置文件,sites-enabled/web
不要求配置文件以.conf
结尾,这一点可以在nginx.conf
中得知配置文件的后缀要求
出现的问题
发现nginx
与 gunicorn
和flask
分别都能正常运行,但配合起来没有正常工作。
主要是nginx
的监听外网80
端口正常,却无法反向代理给5000
端口的gunicorn
。
解决的方法
在/sites-enabled
的目录下,查看default
文件,发现default
中的server{ }
配置已监听80
端口,而我的server
配置也是监听80
端口,因此便产生的冲突,而我的配置优先级不够,因此反向代理失败了。
解决冲突:将default
关于server
的配置注释或者删掉。
然后重载一下配置
$service nginx reload
或者直接重启一下nginx
$service nginx restart
然后问题就解决了。
该问题的解决是我在思否上提问得到的回复中获取到的思路。具体关于问题的详情,你也可在nginx + gunicorn 没有成功 反向代理 这个页面中查看
评论暂时关闭