Nginx反向代理到apache-wordpress可以工作,但是proxy_pass到外部URL失败

时间:2018-09-18 16:34:59

标签: wordpress nginx apache2 reverse-proxy

我为apache wordpress设置了nginx反向代理,效果很好。但是根据位置需要重定向到失败的外部URL。请检查以下配置。这是有效的设置吗?

https://platform.com/-可行-任何后续的wp页面也可行

https://platform.com/pen-这需要重定向到https://abcdef.com-不起作用-404页面加载错误有帮助吗?

server {
    listen 443 ssl default_server;
    listen [::]:443 default_server;

    server_name platform.com;
    server_tokens off;

    root /var/www/html/def/public/;
    index index.php;

    ssl on;
    ssl_certificate /tmp/fgh.crt;
    ssl_certificate_key /tmp/fgh.pem;

    access_log /var/log/nginx/access2.log;
    error_log /var/log/nginx/error2.log;

    location / {
            proxy_set_header X-Forwarded-Proto $scheme;
            try_files $uri @apache;
    }

    location @apache {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8080;
    }

     location ~[^?]*/$ {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8080;
     }

     location /pen {
            proxy_pass https://abcdef.com;
    }
   }

2 个答案:

答案 0 :(得分:1)

您正在做的是给https://abcdef.com的proxy_pass,而不是重定向。如果您的意思是重定向,则代码为:

 location /pen {
        return 301 https://abcdef.com;
}

如果这不是确定的重定向,请使用302而不是301,因此不会被缓存(因为测试要好得多)。

给出404的原因是因为您正在访问带有主机名/ URL https://abcdef.com的请求的https://platform.com/pen 如果目的地服务器不准备接收整个URL,则返回404,因为未找到/ pen。

答案 1 :(得分:1)

将服务器名称(wordpress站点)从http前缀更改为www前缀后,代理传递重定向指示起作用。必须将所有http https服务器块重定向到Nginx配置中的www服务器块