Nginx

Wordpress、tomcat、apache2 和 nginx:wordpress 上的重定向循環

  • August 16, 2016

我為一個網站安裝了tomcat,為另一個網站安裝了apache2(wordpress)。問題發生在 wordpress 網站上。有用於反向代理的 nginx,這裡是:

server {
       listen   80;

       root /var/www/html/;
       index index.php index.html index.htm;

       server_name test.example.com;

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

       location ~ \.php$ {

       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:8081;

        }

        location ~ /\.ht {
               deny all;
       }
}
server {
 listen 80;
 server_name conf.example.com;
 location / {
   proxy_pass http://127.0.0.1:8080;
 }
}

server {
       listen 80 default_server;
       listen [::]:80 default_server ipv6only=on;

       root /usr/share/nginx/html;
       index index.html index.htm;

       # Make site accessible from http://localhost/
       server_name batterykazakhstan.com;

       location / {
               # First attempt to serve request as file, then
               # as directory, then fall back to displaying a 404.
               try_files $uri $uri/ =404;
               # Uncomment to enable naxsi on this location
               # include /etc/nginx/naxsi.rules
       }

}

所以tomcat執行良好。但是 Wordpress 總是重定向到循環中的歡迎頁面。你能幫忙解決這個問題嗎?我閱讀了它並嘗試了將functions.php放在頂部建議的解決方案:

remove_filter('template_redirect', 'redirect_canonical');

但這沒有幫助..

編輯1:

埠 8081 將連接到 tomcat 伺服器並打開 wordpress 站點 test.example.com

埠 8080 轉到 conf.example.com 並打開執行正常的 tomcat 伺服器網站。

編輯 2: 這是 apache 配置:

ServerAdmin webmaster@localhost DocumentRoot /var/www/html

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

編輯 3:

我這裡只有兩個 .htaccess 文件:

/var/www/html/wp-content/uploads/wp-clone/.htaccess

內容:

<Files>
       Order allow,deny
       Deny from all
       Satisfy all
</Files>

還有一個在這裡

/var/www/html/wp-content/plugins/akismet/.htaccess

有內容:

<IfModule !mod_authz_core.c>
       Order Deny,Allow
       Deny from all
</IfModule>

# Apache 2.4
<IfModule mod_authz_core.c>
       Require all denied
</IfModule>

# Akismet CSS and JS
<FilesMatch "^(form\.js|akismet\.js|akismet\.css)$">
       <IfModule !mod_authz_core.c>
               Allow from all
       </IfModule>

       <IfModule mod_authz_core.c>
               Require all granted
       </IfModule>
</FilesMatch>

# Akismet images
<FilesMatch "^logo-full-2x\.png$">
       <IfModule !mod_authz_core.c>
               Allow from all
       </IfModule>

       <IfModule mod_authz_core.c>
               Require all granted
       </IfModule>
</FilesMatch>

編輯4:

wp-admin 工作正常,它只是網站本身。Wordpress 地址 (URL) 和站點地址 (URL) 都設置為http://test.example.com

讓我在這裡總結一下解決方案。

在這個範例中,我們的作者將建構一個典型的 Nginx-Apache Web 基礎設施。Nginx 將用作 Web 代理,將流量重定向到不同的後端伺服器。這是一個顯示關係的簡單網路圖。

網路圖

作者希望將所有 PHP 流量重定向到他的後端 Apache Web 伺服器,但由於我們可能在 php 副檔名後面有參數,因此以 php 結尾的匹配將失敗。我們使用了 location 塊:

location ~ \.php

這將匹配任何帶有 .php 關鍵字的 URL,作者應該能夠執行後端 PHP 應用程序(例如 WordPress)。對於全新安裝,我們可能還需要檢查 .htaccess 文件是否位於 WordPress 的根文件夾中。

參考連結: Nginx 反向代理管理員指南WordPress htaccess 文件htaccess WordPress 安全

引用自:https://serverfault.com/questions/797040