我的设置已经运行了大约 6 个月,我刚刚意识到发生了一个非常严重的问题。我确信这是一件非常简单的事情,但我无法弄清楚。这是我的设置:
我正在运行 Ubuntu 18.04,Docker 19.03.12 和 nginx 1.14.0。我有 6 个容器在运行,所有容器都包含某种 Web 应用程序。在我的 /etc/nginx/sites-enabled 中,我有 6 个 conf 文件(每个 webapps/containers 一个),它们仅在启用 SSL 的情况下监听 443。它们每个都有一个单独的位置,如下所示:
location / {
proxy_pass http://192.168.1.53:8080;
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-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
}
“server_name” 是一个子域(例如 my_sub1.mydomain.com、my_sub2.mydomain.com 等),它们各自都转到不同端口上的同一 IP。不确定这是否重要,但我使用 LetsEncrypt 来加密我的证书。
一切都在正常运转——如果我去https://my_sub1.mydomain.com它被路由到正确的 webapp/容器。但是,如果选择任何随机字符串作为子域(例如 abc123.mydomain.com),它将重定向到在 8080 上运行的 webapp。我的浏览器会给我一个证书警告(自然而然),但它确实重定向到了这个 webapp。我查看了 ../sites-enabled/ 以及 ../conf.d(为空)中的所有配置,我看不到这个子域重定向到哪里......以及为什么它选择这个特定的端口(8080)。
我是否遗漏了一些全局设置?基本上,我只希望它在我指定的子域上重定向,并在其他所有子域上重定向 404。