當前位置:首頁 > 新聞資訊 > 員工天地 >

WordPress切換到Nginx服務器

發表日期:2019-09-09 14:55:35瀏覽次數: 標簽:   

 

這幾天將幾個WordPress的Web服務器從Apache切換到了Nginx,中間遇到了不少問題,因此記錄一下,以便日后維護使用。

  對于WordPress站點來說,固定鏈接主要是通過根目錄下的.htaccess文件來控制,切換服務器后,Nginx的rewrite格式和Apache的不同,需要修改。

\ 

 先卸載Apache系統,之后安裝Nginx系統。
  在BT面板后臺,點“網站”-“設置”-“偽靜態”,對于單站點的WordPress來說,原先的.htaccess文件內容如下:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

  切換到Nginx系統后,其配置內容如下:

location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

  對于子域名方式的多站點的WordPress來說,原先的.htaccess文件內容如下:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

  切換到Nginx系統后,其配置內容如下:

if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}

  此外,服務器上還安裝了v2ray,原先在Apache里配置的內容如下:

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /test/(.*)           ws://127.0.0.1:11111/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /test/(.*)           http://127.0.0.1:11111/$1 [P,L]

  切換到Nginx后,在Nginx服務器配置文件里修改的內容如下:

location /test/ {
proxy_pass http://127.0.0.1:11111/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}

\這幾天將幾個WordPress的Web服務器從Apache切換到了Nginx,中間遇到了不少問題,因此記錄一下,以便日后維護使用。

  對于WordPress站點來說,固定鏈接主要是通過根目錄下的.htaccess文件來控制,切換服務器后,Nginx的rewrite格式和Apache的不同,需要修改。

  先卸載Apache系統,之后安裝Nginx系統。
  在BT面板后臺,點“網站”-“設置”-“偽靜態”,對于單站點的WordPress來說,原先的.htaccess文件內容如下:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

  切換到Nginx系統后,其配置內容如下:

location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

  對于子域名方式的多站點的WordPress來說,原先的.htaccess文件內容如下:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

  切換到Nginx系統后,其配置內容如下:

if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}

  此外,服務器上還安裝了v2ray,原先在Apache里配置的內容如下:

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /test/(.*)           ws://127.0.0.1:11111/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /test/(.*)           http://127.0.0.1:11111/$1 [P,L]

  切換到Nginx后,在Nginx服務器配置文件里修改的內容如下:

location /test/ {
proxy_pass http://127.0.0.1:11111/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}

足球