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...
我在第一个 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...