如何修复Nginx的ipv6only=on重复定义问题?
Nginx SSL配置错误修复方案
错误原因分析
duplicate listen options for [::]:443:两个域名的配置块都手动添加了ipv6only=on参数,而该参数在同一端口只能定义一次。且Ubuntu 22.04自带的Nginx版本(1.18+)默认已为listen [::]:port开启ipv6only=on,无需手动指定。invalid parameter "ssl_certificate":原配置中listen指令的分号被注释符号#覆盖,导致Nginx无法识别指令结束,错误将ssl_certificate视为listen的参数。
修正后的配置文件
主域名 scores-catalog.org 配置
server { root /var/www/scores-catalog.org/html; server_name scores-catalog.org www.scores-catalog.org; location / { proxy_set_header Host $http_host; # 补充你的其他proxy配置 proxy_pass http://127.0.0.1:8055; } # 修正listen指令语法,移除冗余的ipv6only参数 listen [::]:443 ssl; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/scores-catalog.org/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/scores-catalog.org/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 } server { if ($host = www.scores-catalog.org) { return 301 https://$host$request_uri; } # managed by Certbot if ($host = scores-catalog.org) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name scores-catalog.org www.scores-catalog.org; return 404; # managed by Certbot }
子域名 jvds.scores-catalog.org 配置
server { root /var/www/jvds.scores-catalog.org/html; server_name jvds.scores-catalog.org; location / { proxy_set_header Host $http_host; # 补充你的其他proxy配置 proxy_pass http://127.0.0.1:8083; } # 无需指定ipv6only,保持语法正确 listen [::]:443 ssl; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/jvds.scores-catalog.org/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/jvds.scores-catalog.org/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 } server { if ($host = jvds.scores-catalog.org) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; listen [::]:80; server_name jvds.scores-catalog.org; access_log /var/log/nginx/jvds.scores-catalog.org.log; error_log /var/log/nginx/jvds.scores-catalog.org.error.log; return 404; # 可选,与主域名配置保持一致 }
验证与生效
- 执行配置检查:
sudo nginx -t - 检查通过后重启Nginx:
sudo systemctl reload nginx
内容的提问来源于stack exchange,提问作者Robert Wildling
相关产品推荐
相关产品推荐

