一个域上的 SSL 而不是服务器 IP 或任何虚拟主机(nginx)

一个域上的 SSL 而不是服务器 IP 或任何虚拟主机(nginx)

我在 nginx 服务器上设置了 SSL,SSL 运行正常,唯一的问题是它在所有其他虚拟主机以及我不希望的服务器 IP 上都能正常工作。它应该只在与激活 SSL 的域相同的服务器块中工作。

以下是服务器块:

server {
    listen 80;
    root /var/www;
    index index.html index.htm index.php;
    server_name SERVER.IP.HERE;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;      
    }
}

server {
        listen 443;
        server_name SERVER.IP.HERE;

        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key; 
}

server {
    listen 80;
    root /var/www/example.com;
    index index.html index.htm index.php;
    server_name example.com;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

我希望 SSL 在服务器 IP 上工作,而不是在 example.com 虚拟主机上工作。最好的方法是什么?

谢谢。

答案1

我没有尝试过,但我认为重定向应该有效。

尝试添加这个在 IP 上配置 SSL 连接的服务器块:

server {
       listen 443;
       server_name *;
       return 301 http://$http_host$request_uri;
 }

答案2

正如此 URL 所示,Catch-all 应为“_”:http://nginx.org/en/docs/http/server_names.html#miscellaneous_names

相关内容