运行多个 nginx 容器,宿主机的 9001 9002 9003 9004 转发容器 80 端口。配置文件中 server_name 设置为 localhost 127.0.0.1 和宿主机的 ipv6 地址,目前外网可以访问。
问题是,这个 v6 地址会变(光猫重启),有什么其他的设置方法吗?只要外网能访问就行。 "*" "_"好像都不行,不设置 server_name 也不行。
![]() | 1 putaozhenhaochi 2023-09-09 17:08:35 +08:00 via Android 外网访问要路由器里做端口映射的吧 |
2 raw0xff OP @putaozhenhaochi 不是端口的问题,可以访问。 |
3 leonshaw 2023-09-09 17:40:31 +08:00 via Android |
4 yinmin 2023-09-09 17:54:04 +08:00 via iPhone ![]() 删除 server_name 参数 |
5 kiml 2023-09-09 18:06:38 +08:00 via Android ![]() server_name 0.0.0.0 这样是否可行呢 |
8 yinmin 2023-09-09 18:20:33 +08:00 ![]() @raw0xff #6 你查一下所有的 server {} 配置,同一个端口只允许 1 个 server {}不设置 server_name ,如果有 2 个不设置 server_name 会出问题。 |
9 raw0xff OP ![]() |
10 nightcc 2023-09-09 18:57:39 +08:00 via Android server_name _ 讲道理不应该不行呀,这个不行是指 connection refused ,还是 403 ,404 什么的? 建议拿日志来看看,具体怎么回事 |
11 raw0xff OP @nightcc server_name _; 可行。 之前不行是因为没发现 http.d 目录还有个 default.conf ,内容是: server { listen 80 default_server; listen [::]:80 default_server; # Everything is a 404 location / { return 404; } location = /404.html { internal; } } 所以,无论另一个 d.conf 文件怎么改,只要不在 server_name 名单里都会 404. server { listen 80 ; listen [::]:80 ; server_name _; default_type text/html; location / { root /usr/share/nginx/html; index index.html index.htm; } } server_name 用_的话,localhost 127.1 0.0 外网 IP 全是 404 ,不知道为什么,可能 _ 没有 default_server 管的宽?哈哈 @yinmin 您给看看为啥? 我现在是 docker 启动时用 d.conf 直接覆盖这个 default.conf 。 |
13 raw0xff OP @yinmin 感谢大佬。 我是 docker compose 了一个运行着 nginx 的 alpine 服务,服务启动时会 scale 多个容器,nginx.conf conf.d html 这三个理解,log/nginx 是不是不适合我?我也在考虑如何监视多个 nginx 容器运行的状态的问题。扯远了哈哈 |