目标:
- 有一个单身的nginx 反向代理所有子网站(在其他端口上运行)。
- 堵塞所有直接连接,而是通过 nginx 路由。
问题):
502 gateway errors
当尝试访问https://www.example.com/site1/
(连接到上游时 connect() 失败(111:连接被拒绝))
设置:
- example.com 在端口 80 上运行(nginx)。
- site1 和 site2 分别在端口 8001 和 8002 上运行。
nginx 配置:
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream site1 {
server 127.0.0.1:8001;
}
upstream site2 {
server 127.0.0.1:8002;
}
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
gzip on;
access_log on;
log_not_found on;
error_log /var/log/nginx/error.log error;
server_name example.com www.example.com;
charset UTF-8;
root /var/www/html;
error_page 404 /404.html;
ssl_prefer_server_ciphers on;
ssl_certificate /etc/ssl/server.crt;
ssl_certificate_key /etc/ssl/server.key;
location /site1/ {
proxy_set_header X-Original-Request $request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://site1;
}
location /site2/ {
proxy_set_header X-Original-Request $request_uri;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://site2;
}
}
}
在设置 nginx 反向代理时遇到一些问题。如果能提供这方面的帮助,我将不胜感激。非常感谢。
答案1
阻止到端口 8000/8001 的所有直接连接:
- 使用 IPtables/firewalld/ufw 关闭 8000/8001 端口的防火墙
- 禁止任何外部 IP 地址访问 8000/8001 上的内容(来自 nginx 的请求将来自本地主机)。
然后你说“我遇到了一些问题”。这些问题到底是什么并不清楚。我假设你的应用程序想要在 / 上运行,而你却试图在 /site1 和 /site2 上运行它们。请确保你的应用程序允许你在适当的 URI 上运行它们。