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中得知配置文件的后缀要求

出现的问题

发现nginxgunicornflask分别都能正常运行,但配合起来没有正常工作。
主要是nginx的监听外网80端口正常,却无法反向代理给5000端口的gunicorn

解决的方法

/sites-enabled的目录下,查看default文件,发现default中的server{ }配置已监听80端口,而我的server配置也是监听80端口,因此便产生的冲突,而我的配置优先级不够,因此反向代理失败了。
解决冲突:将default关于server的配置注释或者删掉。

然后重载一下配置
$service nginx reload

或者直接重启一下nginx
$service nginx restart

然后问题就解决了。

该问题的解决是我在思否上提问得到的回复中获取到的思路。具体关于问题的详情,你也可在nginx + gunicorn 没有成功 反向代理 这个页面中查看

相关内容

    暂无相关文章