我正在尝试为单个域实施这些规则,而我似乎无法找到在线进行此操作的正确方法:
https://www.domain.com
https://www.domain.com
使用端口到目前为止,这就是我所拥有的:
server {
listen 80;
server_name domain.io www.domain.io;
return 301 https://www.domain.io$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.io;
ssl_certificate /etc/letsencrypt/live/domain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.io/privkey.pem;
#MORE SSL BLOCKS
#remnants, should I remove this?
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_pass http://IP_ADDR:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
我尝试在两个服务器块之间添加它。
server {
listen 443;
server_name domain.io;
return 301 https://www.domain.io$request_uri;
}
这会以某种方式破坏非www上的SSL。
第一个块有效,就像我想象的那样。未指定协议重定向到https,但非www仍重定向到非www。
网络不是我的专长,所以请原谅任何错误的术语。
答案 0 :(得分:0)
对于那些需要解决方案的人,我通过理查德史密斯在评论中提出的建议来解决问题。我在我的网站上使用了Let的加密密钥,因此您只需要在listen 443上复制ssl证书行以获取非www阻止。
server {
listen 80;
server_name domain.io www.domain.io;
return 301 https://www.domain.io$request_uri;
}
server {
listen 443;
server_name domain.io;
ssl_certificate /etc/letsencrypt/live/domain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.io/privkey.pem;
#SSL_BLOCK
return 301 https://www.domain.io$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.io;
ssl_certificate /etc/letsencrypt/live/domain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.io/privkey.pem;
#SSL_BLOCK
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_pass http://IP_ADDR:PORT;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}