【问题标题】:React app with wordrpess on nginx won't work on HTTPSnginx 上带有 wordrpess 的 React 应用程序无法在 HTTPS 上运行
【发布时间】:2020-06-09 10:25:08
【问题描述】:

我正在构建一个带有 wordpress 网站的 React 应用程序。 它应该以这种方式工作:

example.com -> 带我到我的 react 应用 example.com/blog -> 将我带到我的 wordpress 博客。

我有一个运行 nginx 的 EC2,它使用反向代理将用户重定向到我的 wordpress 博客。我的配置是这样的:

  listen 80;
  listen 443 http2 ssl;
  listen [::]:443 http2 ssl;

  server_name example.com;

  root /var/www/react-app/react-app/build;
  index index.html;

  access_log off;
  error_log /var/log/nginx/react-app.error.log;

  location ^~/blog {
   proxy_pass https://54.175.178.245;
   proxy_set_header Host $host;
   #proxy_set_header X-Real-IP $remote_addr;
   #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
  }


  location / {
    try_files $uri /index.html =404;
  }

   location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {

     expires 365d;

  }

  location = /favicon.ico {
    alias /var/www/react-app/react-app/build/favicon.ico;
  }

}

我遇到的问题是,当我使用我的服务器的 IP 时它可以正常工作,但是当我转到 example.com 时它不起作用

它只是不会将我重定向到我的 wordpress 应用程序。

值得一提的是,如果我在隐身模式下直接进入 example.com/blog,它确实可以正常工作。

我做错了吗?

编辑:

好的,所以实际上这两行是不需要的:

listen 443 http2 ssl;
listen [::]:443 http2 ssl;

我通过 AWS 上的 ELB 管理我的 SSL 证书,该 ELB 与我的 EC2 服务器相连。

现在我的服务器配置似乎可以正常工作,因为如果我使用 cURL,它可以正常工作。 如果我从 cURL 请求 example.com/blog,它可以正常工作。但它在我的浏览器上无法正常工作。

【问题讨论】:

  • 所以如果它与 CURL 一起使用,这意味着您的浏览器存在缓存问题,您应该尝试使用另一台计算机
  • 我尝试了几种设备并在所有设备中得到了相同的结果。

标签: reactjs wordpress nginx amazon-ec2 reverse-proxy


【解决方案1】:

如果你想反向代理 https,你不能在同一个块上混合 80 和 443

{
    listen 443 http2 ssl;
    listen [::]:443 http2 ssl;

    server_name *.example.com;

    root /var/www/react-app/react-app/build;
    index index.html;

    ssl_...
    ...

    access_log off;
    error_log /var/log/nginx/react-app.error.log;

    location /blog/ { # the end trailing slash is important
        proxy_pass https://54.175.178.245/blog;
        proxy_set_header Host $host;
        #proxy_set_header X-Real-IP $remote_addr;
        #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location / {
      try_files $uri /index.html =404;
    }

     location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
       expires 365d;
    }

    location = /favicon.ico {
      alias /var/www/react-app/react-app/build/favicon.ico;
    }
}

【讨论】:

  • 好的,实际上这两行是不需要的:listen 443 http2 ssl; listen [::]:443 http2 ssl; 我正在通过 AWS 上的 ELB 管理我的 SSL 证书,该 ELB 与我的 EC2 服务器相连。
  • 您能否确认您的负载均衡器至少看到一个应用程序,在修复检查的某处查看 1/1 而不是 0/1
  • 这是健康检查的样子:172.31.7.147 - - [24/Feb/2020:06:25:21 +0000] "GET / HTTP/1.1" 200 393 "-" "ELB-HealthChecker/2.0"
猜你喜欢
  • 2021-12-24
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 2022-12-30
  • 2020-05-06
相关资源
最近更新 更多