Wordpress混合内容错误,亚马逊ELB背后的Nginx反向代理

时间:2017-11-01 15:12:33

标签: wordpress amazon-web-services nginx reverse-proxy elastic-load-balancer

更新 我用插件解决了混合内容的问题 现在的主要问题是,当我进入管理员登录页面时,我被重定向到<>内的登录页面。而是我的域名

  • 我在Amazon Elastic Beanstalk上有一个Rails应用程序,它位于Amazon Elastic Load Balancer后面。 在与Rails应用程序相同的服务器上,我有一个带有反向代理的nginx服务器,用于另一台服务器上的Wordpress博客。 (因此可以通过example.com/blog访问)

  • 我们的域位于GoDaddy,我有一个转发规则,从example.com到https://www.example.com。域本身将转发到ELB的CNAME

  • 在Load Balancer上有一个端口443的监听器,它被转发到端口80

enter image description here

  • 在服务器内部,我有一条强制从http重定向到https的规则

  • 当我使用没有Load Balancer的单个服务器时,反向代理工作正常,但自从我开始使用它以来,博客的资产未正确加载,我收到混合内容错误。{{ 3}}

nginx配置在没有elb的情况下工作:

server {
  listen 80;
  server_name <<rails-app-domain>>;

  if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})T(d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
  }

  access_log  /var/log/nginx/access.log  main;
  access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;

  location /health_check {
    access_log off;
    return 200;
  }

  location / {
    if ($http_x_forwarded_proto != 'https') {
      return 301 https://$server_name$request_uri;
    }

    proxy_pass http://my_app;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location ^~ /blog {
    proxy_pass http://<<wordpress-server-ip>>/blog;
    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;

    proxy_redirect http://<<wordpress-server-ip>>/ https://$host/;
    proxy_cookie_domain <<wordpress-server-ip>> $host;
  }

  location /assets {
    alias /var/app/current/public/assets;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }

  location /public {
    alias /var/app/current/public;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }

  location /cable {
    proxy_pass http://my_app;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
}

wordpress wp-config.php:

define('WP_SITEURL', 'https://<<rails-app-domain>>/blog');
define('WP_HOME', 'https://<<rails-app-domain>>/blog');

define('FORCE_SSL_ADMIN', true);

我尝试了什么:

  1. 为http设置子过滤器 - &gt;所有的https重写规则 位于/ blog
  2. 内的位置
  3. / http中的所有位置的重定向规则从http到https
  4. 在nginx中添加端口443的侦听器并重定向端口 443负载均衡器到服务器的端口443(而不是80 像之前一样)

  5. 删除GoDaddy上的域转发

0 个答案:

没有答案