无法使用443端口时,如何配置Nginx实现Shiny应用无端口访问?
解决方案
由于运营商占用了443端口,无法直接通过默认HTTPS端口(443)实现无端口访问,我们可以通过HTTP默认端口(80)自动跳转至HTTPS 8443端口的方式,达成无需手动输入端口的访问效果,具体配置步骤如下:
1. 修复现有Nginx配置的语法错误
你的第二个server块存在语法问题,if语句的闭合括号位置错误,修改后代码如下:
server { if ($host = shiny-server.modlearth.com) { return 301 https://www.modlearth.com$request_uri; } # managed by Certbot listen 81; listen [::]:81; server_name shiny-server.modlearth.com; return 404; # managed by Certbot }
2. 添加HTTP 80端口的重定向配置
新增一个监听80端口的server块,将所有HTTP请求自动跳转至HTTPS的8443端口:
server { listen 80; listen [::]:80; server_name shiny-server.modlearth.com www.shiny-server.modlearth.com; # 将HTTP请求自动重定向到带8443端口的HTTPS地址 return 301 https://$server_name:8443$request_uri; }
3. 验证配置并重启Nginx
- 先检查Nginx配置语法是否合法:
sudo nginx -t - 确认语法无误后,重启Nginx服务:
sudo systemctl restart nginx
效果说明
配置完成后,用户只需输入 http://shiny-server.modlearth.com/shiny/,Nginx会自动将请求跳转至 https://shiny-server.modlearth.com:8443/shiny/,无需手动指定端口即可访问应用。
补充:若后续443端口可用的调整方案
如果运营商解除了443端口的占用,你可以将第一个server块的监听端口替换为443:
listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot
同时将80端口重定向配置中的:8443移除:
return 301 https://$server_name$request_uri;
验证配置并重启Nginx后,即可实现纯HTTPS无端口访问。
内容的提问来源于stack exchange,提问作者César Arquero Cabral
相关产品推荐
相关产品推荐

