【问题标题】:nginx redirect http to https domainnginx 将 http 重定向到 https 域
【发布时间】:2021-02-26 15:15:25
【问题描述】:

我的应用程序在 AWS EC2 实例上运行。我有一个使用来自 cloudflare 的 HTTPS 的域名。我已将 cloudflare 的“A 记录”添加到 EC2 IP 地址

我使用的Nginx配置如下

步骤 1)

  server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name inzack.com www.inzack.com;

    rewrite ^\/[^\/]+\/(.*) /$1 redirect;

    location / {
            return 301 https://$server_name$request_uri;
    }
 }


server {
    listen 443;
    server_name inzack.com www.inzack.com;
    ssl on;
    ssl_certificate  /home/ubuntu/certificates/inzack.crt;
    ssl_certificate_key  /home/ubuntu/certificates/inzack.key;
    real_ip_header X-Forwarded-For;
    set_real_ip_from 127.0.0.1;

   location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://127.0.0.1:5000;
    }

}

步骤 2) sudo nano /etc/nginx/sites-available/inzack.com

以下是文件中的条目:

   upstream inzack.com {
      server 127.0.0.1:5000;
    }
 
    server {
    listen 80;
    listen [::]:80;
    server_name inzack.com;
      location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass https://inzack.com;
        proxy_redirect on;
           }
       }   

我尝试了所有这些链接:

http to https redirection on nginx

Node.js + Nginx - What now?

在这方面的任何帮助都会非常棒......

谢谢 k

【问题讨论】:

    标签: nginx https


    【解决方案1】:

    不需要更改 etc/Nginx/Sites-available/ 文件夹

    步骤一)@cloudflare 将页面规则改为 Https

    第 2 步)

      server{
      listen 80;
         server_name inzack.com www.inzack.com;
    
       location /
         {
           proxy_pass http://127.0.0.1:4000;
         }
    
    
    
       }
        server {
    
        listen 443;
        server_name inzack.com www.inzack.com;
        ssl on;
        # copy these files from cloudflare save it as .crt and .key
        # cop
        ssl_certificate  /home/ubuntu/certificates/inzack.crt;
        ssl_certificate_key  /home/ubuntu/certificates/inzack.key;
        real_ip_header X-Forwarded-For;
        set_real_ip_from 127.0.0.1;
    
       location / {
                       proxy_pass http://127.0.0.1:4000;
        }
    

    }

    重启 Nginx 服务器

    【讨论】:

    • 通过上述方法,我们需要向所有 IP 地址开放 4000 端口,这是一个安全漏洞。我们需要找到一种在不打开端口的情况下访问应用程序的方法
    • 否 - 无需向公众公开端口 4000。小127.0.0.1 告诉你。端口 80 / 443 在这里很重要。
    • 这不会将用户从http 重定向到https。 @inzack 在您的示例中,该网站也将在端口 80 上可用。您可以在server 块中的location 中使用简单的return 301 https://$host$uri;,在端口80 上侦听。
    • 关于“暴露端口 4000” 如果我不在 AWS 安全组中释放 4000,则无法访问。
    • 请建议在不释放端口的情况下如何从 Internet 访问 Web 应用程序。但是 80 和 443 端口已经被释放了
    猜你喜欢
    • 2015-08-26
    • 2011-03-29
    • 2018-01-05
    • 1970-01-01
    • 2018-04-27
    • 2014-10-11
    • 2018-08-18
    • 2017-02-25
    • 2016-01-30
    相关资源
    最近更新 更多