Nginx 代理服务器到另一个代理服务器网关超时
Nginx proxy server to another proxy server Gateway timeout
这是我第一次在部署环境中部署应用程序,所以我是一个完全的初学者,我在一个实例上有一个 nginx 代理服务器(称之为 server1),它具有暴露的 IP 到互联网并路由请求到托管我的 Django 应用程序的不同实例(称为 server2)上的另一台服务器,server1 的 conf 文件如下所示:
`server{
server_name _;
location / {
proxy_pass_header Authorization;
proxy_pass http://10.156.0.4:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
listen 443 ssl;
listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf; }
server{
listen 80;
listen [::]:80;
server_name _;
return 302 https://35.246.244.220;}
和第二个服务器:
server{
listen 80;
listen [::]:80;
server_name _;
location / {
proxy_pass_header Authorization;
proxy_pass http://10.156.0.4:8880;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
location /static/ {
alias /opt/app/mydjangoapp/staticfiles/;
autoindex off; }
}
我是 运行 我的 django 应用程序,使用此命令 python manage.py runserver 0.0.0.0:8880
& 我也在 运行 应用程序之前做了 collectstatic
。
当我将 server1 中的 proxy_pass 直接编辑为 http://10.156.0.4:8880
时,一切正常,但我需要第二个 nginx 服务器,以便我可以为我的应用程序提供静态文件。
我觉得我在这里做的事情显然是错误的,但我这辈子都弄不明白。
我发现了问题,这两个实例之间有一条防火墙规则不允许从端口 80 进出,只允许端口 8880。根本没有想到这一点!
这是我第一次在部署环境中部署应用程序,所以我是一个完全的初学者,我在一个实例上有一个 nginx 代理服务器(称之为 server1),它具有暴露的 IP 到互联网并路由请求到托管我的 Django 应用程序的不同实例(称为 server2)上的另一台服务器,server1 的 conf 文件如下所示:
`server{
server_name _;
location / {
proxy_pass_header Authorization;
proxy_pass http://10.156.0.4:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
listen 443 ssl;
listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf; }
server{
listen 80;
listen [::]:80;
server_name _;
return 302 https://35.246.244.220;}
和第二个服务器:
server{
listen 80;
listen [::]:80;
server_name _;
location / {
proxy_pass_header Authorization;
proxy_pass http://10.156.0.4:8880;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
location /static/ {
alias /opt/app/mydjangoapp/staticfiles/;
autoindex off; }
}
我是 运行 我的 django 应用程序,使用此命令 python manage.py runserver 0.0.0.0:8880
& 我也在 运行 应用程序之前做了 collectstatic
。
当我将 server1 中的 proxy_pass 直接编辑为 http://10.156.0.4:8880
时,一切正常,但我需要第二个 nginx 服务器,以便我可以为我的应用程序提供静态文件。
我觉得我在这里做的事情显然是错误的,但我这辈子都弄不明白。
我发现了问题,这两个实例之间有一条防火墙规则不允许从端口 80 进出,只允许端口 8880。根本没有想到这一点!