我有一个项目,并使用nginx在各自的端口上反向代理请求,而不打开端口。我还使用let encrypt进行ssl认证,一切正常。
我想做的是,关闭80号端口,让443打开。我以为,
再关闭一个端口就更安全了。
但是,现在http到https的重定向不起作用(显然我猜)。现在,只有当我在前面键入前缀“https://”时,链接才起作用。
所以我有两个问题,
1)有没有办法在不打开端口80的情况下将链接重定向到https?
2)如果唯一运行的应用程序是这个应用程序,并且只有端口443和22打开,那么我们假设为了使重定向工作而让端口80保持打开状态有多安全?
我的配置文件如下:

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;
    }

}

最佳答案

不,当Traffic在服务器上关闭时,不能从一个端口转发它。
如果可能的话,并且您拥有高级网络管理,您可能能够在流量到达服务器之前将其从80重定向到443。
例如,在Digital Ocean中,您可以在Networks下添加一个负载平衡器,并设置从端口80到443的重定向。这样您就可以关闭服务器上的端口80。

10-07 19:42
查看更多