我有一个项目并使用nginx在相应端口上反向代理请求而不打开端口。我也使用Lets加密ssl认证,一切正常。
我想要做的是,关闭80端口并保持443打开。我想,
再多一个端口关闭=更安全一点。
但是,现在http到https重定向不起作用(显然我猜)。现在,只有在前面键入前缀“https://”时,链接才有效。
所以我有两个问题,
1)有没有办法在不打开端口80的情况下将链接重定向到https?
2)我们如何安全地假设将端口80打开以使重定向工作,如果唯一运行的应用程序是这个并且只有端口443和22打开了?
我的配置文件是这样的:
server {
listen 80;
server_name domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name domain.com;
add_header Strict-Transport-Security "max-age=31536000";
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
location / {
proxy_pass http://127.0.0.1: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;
}
}
答案 0 :(得分:0)
否,当服务器本身关闭时,您无法从一个端口转发流量。
如果可能,并且您具有高级网络管理,则可以在流量到达服务器之前将其从80重定向到443。 例如,在Digital Ocean中,您可以在网络下添加负载均衡器并设置从端口80到443的重定向。这样,您就可以在服务器上关闭端口80。