如何解决www nginx 在前端 nginx 后面,www 服务器端口 80 默认以某种方式打开?
我正在为一个具有多个 www 站点和 express/node 服务器的项目组装一个演示服务器。所有这些都在一个平台上运行。
在前端,我有一个 nginx 处理 https,并将流量路由到正确的目的地。
在那个座位后面有几个 nginx 实例,为我的网站(以及多个 Express 服务器)提供服务。一切都很好,除了我认为网站服务器 nginx 实例直接连接到端口 80 时,我希望所有流量都通过我的前端 nginx。当我运行 docker ps
时,我得到以下信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ce18a670fae anon_nginx-demo "/docker-entrypoint.…" 11 minutes ago Up About a minute 0.0.0.0:80->80/tcp,0.0.0.0:443->443/tcp nginx-demo
1836dd0362fe anon_www-admin-anon "/docker-entrypoint.…" 11 minutes ago Up About a minute 80/tcp www-admin-anon
...
(此处仅显示相关子集)。
实例 anon_www-admin-anon 清楚地显示端口 80 出去了,还是我读错了? 我不相信我在此实例上的任何地方都打开了端口 80,它应该侦听前端 nginx 与之对话的 8080。
前端对应的/etc/nginx/conf.d
文件为:
upstream www-anon {
server www-admin-anon:8080;
}
server {
listen 80;
server_name my.domain.com www.my.domain.com;
location ^~ /.well-known {
access_log /var/log/nginx/access.log main;
root /etc/letsencrypt/webroot;
}
location / {
if ($scheme = http) {
return 301 https://my.domain.com$request_uri;
}
}
}
server {
listen 443 ssl http2;
server_name www.my.domain.com;
ssl_certificate /etc/letsencrypt/live/my.domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.com/privkey.pem; # managed by Certbot
return 301 https://my.domain.com$request_uri;
}
server {
listen 443 ssl http2;
server_name my.domain.com;
ssl_certificate /etc/letsencrypt/live/my.domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.com/privkey.pem; # managed by Certbot
location / {
# access_log off;
proxy_pass http://www-anon;
proxy_redirect off;
proxy_set_header Host $host;
# Find client IP address,# see https://stackoverflow.com/questions/10849687/express-js-how-to-get-remote-client-address
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto https;
}
}
网站服务器基于nginx:1.19.6-alpine。有一个 /etc/nginx/conf.d/default.conf
文件:
server {
listen 8080;
# listen [::]:8080;
server_name mydomain.com www.my.domain.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
# Let react-router-dom control paths
# https://stackoverflow.com/a/49252605/9316077
try_files $uri /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我一直在调整这个东西几个小时,但没有看到这个端口 80 是从哪里来的。 如果我的 docker-compose 中有这个:
www-admin-anon:
ports:
- 8080:80
然后移动 80 端口:
baf6c9797f96 anon_nginx-demo "/docker-entrypoint.…" 9 seconds ago Up 7 seconds 0.0.0.0:80->80/tcp,0.0.0.0:443->443/tcp nginx-demo
fb45bb620cd7 anon_www-admin-anon "/docker-entrypoint.…" 12 seconds ago Up 10 seconds 0.0.0.0:8080->80/tcp www-admin-anon
但是...我不相信我从一开始就打开过它。 nginx:1.19.6-alpine 镜像中是否有默认情况下会打开端口 80 的内容?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。