我希望 nginx 充当 SSL 代理,但对于主机:“ssl.example.com”
同时我希望 nginx 为主机提供“nginx 正常”网站服务:“ssl-check.example.com”(这只是例子,请不要在这里建议任何监控工具)
对于指向我的 IP 的其他主机,我想提供 404 或其他什么。-
我不关心证书不匹配 - 所以 SNI 不是我想要的。-
我不想使用描述为陷阱解决方案并使用类似的东西
if ($host != $server_name) {
root /var/www/errors/404
所有这些都在单个 IP 上。
我有有效的 SSL
server {
使用 server_namessl.example.com- 按我想要的方式工作。
另一个 ssl
server {
使用 server_namessl_check.example.com- 显示“nginx 正常”
最后一台服务器(也是 ssl)没有 server_name(或以“_”作为名称),应该提供 404 服务,但它不起作用......
解决了
我使用该解决方案的配置现在看起来(并且工作)如下:
- 服务器使用“listen 443 ssl;”提供代理
- 服务器显示“listen 443 ssl;”服务“nginx is ok”
- 服务器使用“listen 443 ssl default_server;”和“location / return 404”
如果此配置有任何危险 - 请毫不犹豫地让我蒙羞。谢谢
答案1
default_server
您可以使用以下选项指定默认虚拟主机listen
指令。如果您不设置,nginx 将选择server
具有匹配listen
指令的第一个块。
server {
listen 443 ssl default_server;
root /var/www/errors/404;
}