Nginx配置SSL后无法反向代理本地127.0.0.1:8080服务问题
解决Nginx反向代理Fossil SCM的HTTPS访问问题
问题根源分析
当前出现ERR_CONNECTION_REFUSED的核心原因大概率是:
- Nginx未加载到你的scm站点配置(未完成sites-available到sites-enabled的软链)
- 防火墙未开放80/443端口
- Nginx配置加载顺序导致默认server拦截请求(默认server块在include之前,虽精确匹配优先,但需确保配置加载正常)
分步修复方案
1. 确保站点配置已启用
检查/etc/nginx/sites-enabled/目录下是否存在scm站点的软链接:
ls -l /etc/nginx/sites-enabled/
如果没有对应的链接,执行以下命令创建(替换scm.conf为你sites-available中的实际配置文件名):
ln -s /etc/nginx/sites-available/scm.conf /etc/nginx/sites-enabled/
2. 调整nginx.conf的配置加载顺序
将include /etc/nginx/sites-enabled/*.conf;移至默认server块之前,确保精确匹配的站点配置优先加载。修改后的nginx.conf http块如下:
http { include /etc/nginx/mime.types; default_type application/octet-stream; server_names_hash_bucket_size 64; # 先加载站点配置,确保精确匹配优先 include /etc/nginx/sites-enabled/*.conf; server { listen 443 ssl default_server; server_name _; ssl_certificate /etc/letsencrypt/live/scm.domain.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/scm.domain.de/privkey.pem; return 444; } server { listen 80; server_name _; return 444; } }
3. 验证Nginx配置语法
执行以下命令检查配置是否存在语法错误:
nginx -t
如果输出test is successful,则配置语法正常;若有错误,根据提示修复。
4. 开放防火墙端口
如果使用ufw防火墙,执行以下命令开放80和443端口:
ufw allow 80/tcp ufw allow 443/tcp ufw reload
若使用其他防火墙(如firewalld),对应执行开放端口的命令即可。
5. 检查Nginx监听状态
确认Nginx正在监听80和443端口:
ss -tulpn | grep nginx
输出中应包含0.0.0.0:80和0.0.0.0:443的监听记录。
6. 重启Nginx服务
完成上述调整后,重启Nginx使配置生效:
systemctl restart nginx
额外说明
https://scm.domain.de:8080返回ERR_SSL_PROTOCOL_ERROR是正常现象:Fossil在8080端口仅提供HTTP服务,不支持SSL,无需处理。- 确保Fossil服务正常运行在
127.0.0.1:8080,可通过curl http://127.0.0.1:8080验证本地访问是否正常。
内容的提问来源于stack exchange,提问作者Deniz
相关产品推荐
相关产品推荐

