我在 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