使用 Certbot 从 Nginx 中删除 WWW



我很困惑为什么我不能让www删除这个域名。在此Nginx配置的底部删除WWW部分。我不确定Certbot是否对此有任何问题,有人看到错误吗?

该网站是实时的,wwwnon www工作。我试图得到 www。 我已经很多年没有问这个问题了,我可能生疏了——给铁皮人点油!

upstream jessered {
server 127.0.0.1:3000;
}
server {
server_name jesse.red www.jesse.red;
root /var/www/jesse.red/;
# ---------------------------------------------------------------
# Location
# ---------------------------------------------------------------
location / {
proxy_pass          http://jessered;
#proxy_http_version  1.1;                                                       
proxy_set_header    Upgrade $http_upgrade;
proxy_set_header    Connection 'upgrade';
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-Proto $scheme;
proxy_cache_bypass  $http_upgrade;
proxy_read_timeout  90;
}
# ---------------------------------------------------------------
# SSL
# ---------------------------------------------------------------
listen 443 ssl http2; # managed by Certbot
gzip off;
ssl_certificate /etc/letsencrypt/live/www.jesse.red/fullchain.pem; # managed by Certbot  
ssl_certificate_key /etc/letsencrypt/live/www.jesse.red/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
error_log /var/www/errors/jesse.red.error.log;
}
# ---------------------------------------------------------------
# Force SSL
# ---------------------------------------------------------------
server {
if ($host = www.jesse.red) {
return 301 https://$host$request_uri;
} # managed by Certbot

if ($host = jesse.red) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
}

# ---------------------------------------------------------------
# Remove Non-www
# ---------------------------------------------------------------
server {
listen 443 ssl http2;
server_name www.jesse.red;
return 301 $scheme://jesse.red$request_uri;
}

如果您只想使用jesse.red而不要使用www.jesse.red,则不要在server_name定义中包含www.jesse.red

您的 if 块不是必需且不正确的,因为如果$host = www.jesse.redreturn 301 https://$host$request_uri仍将return 301 https://www.jesse.red/$request_uri

您的整体配置可以整理一下,如下所示:

# Force SSL
server {
listen 80;
server_name jesse.red;
root /var/www/jesse.red/;
return 301 https://$host$request_uri;
}
# SSL configuration
server {
listen 443 ssl http2; # managed by Certbot
gzip off;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.jesse.red/fullchain.pem; # managed by Certbot  
ssl_certificate_key /etc/letsencrypt/live/www.jesse.red/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
error_log /var/www/errors/jesse.red.error.log;
location / {
proxy_pass          127.0.0.1:3000;
#proxy_http_version  1.1;                                                       
proxy_set_header    Upgrade $http_upgrade;
proxy_set_header    Connection 'upgrade';
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-Proto $scheme;
proxy_cache_bypass  $http_upgrade;
proxy_read_timeout  90;
}
}

最新更新