nginx 代理仅在 Nginx 上提供部分数据 Wordpress 运行

nginx proxy only serves part of data Wordpress running on Ngninx

我在第一个 nginx 服务器(虚拟机 A)上有一个 Wordpress 实例 运行。 我可以在本地完美地工作,一切都得到很好的解决,所有路径都可以通过我的 url www.corph.mouradcloud.com

至于目前,我没有使用 SSL,所以这是一个稍后的问题:)

这是我的 Nginx Web 实例的配置:

        upstream php-wp {
            server            unix:/var/run/mouradcloud.sock;
        }

        server {
            listen            80;
            listen            [::]:80;
            server_name       www.corph.mouradcloud.com;
            root              /var/www/mouradcloud;

                index                     index.php;

                location / {
                        try_files     $uri $uri/ /index.php?$args;
                }

                location = /favicon.ico {
                        log_not_found off;
                        access_log    off;
                }

                location = /robots.txt {
                        allow                    all;
                        log_not_found off;
                        access_log    off;
                }

                location ~ .php$ {
                        include       fastcgi.conf;
                        fastcgi_pass  php-wp;
                }

                location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
                        expires       max;
                        log_not_found off;
                }
        }

我有第二个 Nginx 服务器,我将其用作具有不同 URL(虚拟机 B)的代理。 在 google 之后,我注意到需要添加一些其他参数才能使 PHP 脚本通过代理。

这里是代理 nginx 文件:

        server {
                listen         80;
                listen         [::]:80;
                server_name    www.mouradcloud.com;

                location / {
                proxy_pass http://www.corph.mouradcloud.com;
                proxy_set_header X-Forwarded-Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Real-IP $remote_addr;
                }

        }

奇怪的是,当客户端使用网络浏览器连接时,调试器路径 /wp-content/ 、 /wp-includes/ 被解析为:

    www.corph.mouradcloud.com 

而不是

    www.mouradcloud.com

这里是调试器的屏幕截图,我们可以看到只有文档通过代理传递,脚本被拒绝,而它不应该因为我在请求中通过代理传递所有东西..

我猜我缺少一些参数。

我尝试添加其他位置,如 /wp-includes/ ,但我最终搞砸了一切......

我查看了所有 SO 线程,但到目前为止没有人有答案

四处寻找后,我找到了解决方案。这很……简单……所以我将分享配置的每一部分,以便人们将来不会浪费时间……

这里是整体情况

记住,至于第一次尝试,我不会使用 Let's encrypt 的 SSL,我将保留它以备后用。现在,这是简单的 http。

在 NGINX 代理上,我使用此配置文件创建了一个站点 (/etc/nginx/sites-available/www.mouradcloud.com)

    server {
     listen 80;
     server_name www.mouradcloud.com;

    location / {
     proxy_pass http://www.corph.mouradcloud.com;
     sub_filter_once off;
     sub_filter 'www.corph.mouradcloud.com' 'www.mouradcloud.com';
     sub_filter_types *;
     }
    }

在 VM Wordpress&Nginx 上,这里是 wp-config.php (/var/www/mouradcloud/wp-config.php),我确实添加了那两行:

    define('WP_SITEURL', 'http://www.corph.mouradcloud.com');
    define('WP_HOME', 'http://www.corph.mouradcloud.com');

最后在我的 WM WOrdpress&Nginx 中,我没有更改我的 nginx Web 服务器的配置,这仍然是一样的 (/etc/nginx/sites-available/www.corph.mouradcloud.com):

        upstream php-wp {
            server            unix:/var/run/mouradcloud.sock;
        }

        server {
            listen            80;
            listen            [::]:80;
            server_name       www.corph.mouradcloud.com;
            root              /var/www/mouradcloud;

                index                     index.php;

                location / {
                        try_files     $uri $uri/ /index.php?$args;
                }

                location = /favicon.ico {
                        log_not_found off;
                        access_log    off;
                }

                location = /robots.txt {
                        allow                    all;
                        log_not_found off;
                        access_log    off;
                }

                location ~ .php$ {
                        include       fastcgi.conf;
                        fastcgi_pass  php-wp;
                }

                location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
                        expires       max;
                        log_not_found off;
                }
        }

Http 不工作我会看看 https...