我的 Nginx 服务器出现了一个奇怪的问题。我使用 Nginx 作为内部运行在服务器上的多个服务的反向代理。
这就是我想要实现的目标:
app1.mydomain.com --- --- server 1: 10.0.0.2
\ 10.0.0.1 /
|--- nginx reverse proxy server --- |
/ \
app2.mydomain.com --- --- server 2: 10.0.0.3
因此,我为 app1 添加了第一个,在我的域名提供商中添加了 DNS 设置,一切都运行正常。我非常兴奋,所以我选择了第二个,然后一切都崩溃了。我运行了nginx -t
,一切都测试正常。Nginx 服务器仍在运行,没有错误,但我失去了查看 app1.mydomain.com 的能力
除了 server_name 和 proxy_pass 之外,配置基本相同
文件:/etc/nginx/sites-available/app1.mydomain.com
server {
server_name app1.mydomain.com;
location / {
client_max_body_size 512M;
proxy_pass http://10.0.0.2;
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_set_header X-Forwarded-Proto $scheme;
}
}
文件:/etc/nginx/sites-available/app2.mydomain.com
server {
server_name app2.mydomain.com;
location / {
client_max_body_size 512M;
proxy_pass http://10.0.0.3;
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_set_header X-Forwarded-Proto $scheme;
}
}
我这样做的方式是将每个配置添加到 sites-available 中的自己的文件中,然后执行sudo ln -s /etc/nginx/sites-available/app1.mydomain.com /etc/nginx/sites-enabled/
这对于 app1 来说非常有效,但是对 app2 执行此操作后,我就无法访问 app1,并且 app2 也不会出现。
在我的路由器中,我将端口 80 和 443 转发到反向代理服务器 10.0.0.1,这些是我路由器上的唯一规则。在我的域名提供商上,我有指向正确 IP 的正确 A 记录。我能够验证应用程序 1 的所有功能是否正常,但在为应用程序 2 执行符号链接以进入启用站点并重新启动 nginx 后,我失去了对所有内容的访问权限。
知道发生了什么吗?谢谢!
答案1
@symcbean 实际上指出了答案。我发布的配置不完整。对于 app1,我使用了显示的确切配置(不知何故起作用了),然后运行了 certbot,它将 TLS 配置和 listen 变量添加到配置中。
然后我添加了应用程序 2 的配置(正如所示),并且在服务器上没有出现任何错误,但是当我尝试访问应用程序 1 或应用程序 2 时开始出现连接被拒绝错误。添加监听配置并重新启动 nginx 后,一切都开始正常工作。
谢谢!