Nginx 作为运行 WordPress 的 Apache 服务器的代理

Nginx 作为运行 WordPress 的 Apache 服务器的代理

我面临着类似的问题这个问题我使用 Nginx 作为运行 WordPress 的 Apache 服务器 (Ubuntu) 的代理。网站的内部链接全部提供 301 重定向到 localhost。

例如,链接:wwww.example.com/internal-link重定向到localhost/internal-link该链接会出现错误 404。

阿帕奇配置如下:

<VirtualHost *:80>
        <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                Require all granted
        </Directory>

        ServerAdmin [email protected]
        ServerName example.com
        ServerAlias www.example.com
        ServerAlias *.example.com
        DocumentRoot /var/www/html
 ...

Nginx配置文件如下:

server {
       # Where IP is server IP and example is the domain name
       listen       IP:80;
       server_name  static.example.com;

       location / {
           proxy_pass http://localhost:8480;
           proxy_set_header X-Real-IP $remote_addr;
       }

}

server {
       listen       IP:80;
       server_name  example.com;
       rewrite      ^ $scheme://www.example.com$request_uri redirect;
}

server {
        listen       IP:80;            # your server's public IP address
        server_name  www.example.com;   # your domain name

    location / {
        proxy_pass http://localhost:8020;
        proxy_set_header X-Real-IP $remote_addr;
    }
}       

.htaccess是 WordPress 默认生成的:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

以下是Apache访问日志的一些记录:

10.0.2.2 - - [15/Jul/2016:07:11:31 -0400] "GET /link/ HTTP/1.0" 301 335 "-" "Mozilla/5.0 (compatible; Cliqzbot/1.0 +http://cliqz.com/company/cliqzbot)"
10.0.2.2 - - [15/Jul/2016:07:08:02 -0400] "GET /link/ HTTP/1.0" 404 5396 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) 

知道是什么原因造成的以及如何解决吗?

答案1

我使用以下 NGINX 服务器块来处理proxy_pass对本地 Apache HTTP 服务器的所有请求:

# cat /usr/local/etc/nginx/conf.d/apache24.conf 
server  {
    listen 80;

    location    /   {
        proxy_pass  http://127.0.0.1;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_pass_header   server;
    }
}
# 

VirtualHost并以正常方式配置Apache 的 HTTP 服务器。

相关内容