我已经为我的 nginx 配置苦苦挣扎了三天,所以也许有人可以帮忙......
我现在的情况:
nginx 反向代理<-->一个 VM 和一个 DOCKER,它在不同的端口(9000 到 9005)上托管多个服务。
如果我使用 127.0.0.1 URL 而不是公共域在本地测试 docker 构建,则一切正常。如果我尝试在 nginx 上使用 https 甚至 https 运行,则会失败。
失败意味着,我可以连接到我的 docker 服务 9001(即登录服务),我登录到应用程序,然后通过 http 再次收到响应,并且该请求不通过 nginx。
我在 VM/Docker 上的服务配置
服务 9001 有前缀 /auth 服务 9002 有前缀 /dashboard
请求如下所示:http://sub.domain/auth或者http://sub.domain/dashboard
在 Nginx 上我搜索这个前缀,因此创建了到正确服务的路由,如下所示:
server {
listen 0.0.0.0:80;
server_name sub.domain;
location /auth/ {
proxy_pass http://172.18.1.25:9001;
proxy_read_timeout 300s;
# proxy header
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Content-Type-Options nosniff;
proxy_set_header X-Frame-Options SAMEORIGIN;
}
location /dashboard/ {
proxy_pass http://172.18.1.25:9002;
proxy_read_timeout 300s;
# proxy header
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Content-Type-Options nosniff;
proxy_set_header X-Frame-Options SAMEORIGIN;
}
location /device/ {
proxy_pass http://172.18.1.25:9005;
proxy_read_timeout 300s;
# proxy header
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Content-Type-Options nosniff;
proxy_set_header X-Frame-Options SAMEORIGIN;
}
}
** 更新 ** 没有 nginx 的测试(直接打开端口到 vm 端口)同样的问题。
--> 下一步测试不使用 docker。直接在我的虚拟机上运行服务...待定