2017-02-13 13 views
2

私は2つのサーバインスタンスに両方ともNGINXを実行しています。Permalinks問題 - リバースプロキシの背後にあるNGINXでWordpressを実行するNGINX

  1. NGINX-Aはリバースプロキシです。設定内のロケーションブロックに応じて異なる内部サーバーにトラフィックを転送します。
  2. NGINX-Bは、すべてのPHP Webアプリケーションが展開されるサーバーインスタンスです。だから、nginxの-A
  3. 他のサーバインスタンス

は、適切なサーバーに再ルーティング、すべての着信トラフィックを受信します。 NGINX-BはApacheの代わりにNGINXで動作する伝統的なWordpressホスティングです。


私はpostnameのパーマリンク仕事をしようとしていますが、そうすることができませんでした。

私の現在のディレクトリ構造:

/appl/wordpress/myblog == symbolic link ==> /usr/share/nginx/html/subdir/myblog 

ここでWordpressのがインストールされているのnginx-Bサーバー上の私の現在の設定です。

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

http://NGINX_B-ip_address/subdir/myblog作品を経由して、それへのアクセス、両方postnameのパーマリンク平野パーマリンク。私は以下のようにwp-configを更新しなければならなかった。

define('WP_HOME', 'NGINX_B-ip_address') 
define('WP_SITEURL','NGINX_B-ip_address'); 

は今、私は、リバースプロキシ、nginxの-Aとして動作する別のnginxのサーバーを持っています。

location /{ 
    proxy_pass http://NGINX_B-internal_ip_address; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection 'upgrade'; 
    proxy_set_header Host $host; 
    proxy_cache_bypass $http_upgrade; 
    #for wordpress 
    proxy_set_header X-Forwarded-Proto $scheme; 
} 

私もそれは平野パーマリンクにを使用して動作し、私は何の問題もなく、WP-adminのにアクセスすることができ、新しいホスト名

define('WP_HOME', 'http://NGINX-A-hostname/myblog') 
define('WP_SITEURL','http://NGINX-A-hostname/myblog'); 

でのwp-config.phpをを更新する必要がありました。私はpermalinksの戦略を変更することもできます。

プレーンパーマリンクを使用しないと、すべてが壊れて404エラーが発生します。

  1. http://NGINX-A-hostname/myblogから
  2. http://NGINX-A-hostname/myblog/wp-adminに動作します - 完全
  3. http://NGINX-A-hostname/myblog/postnameに動作します - 失敗| 404
  4. http://NGINX-A-hostname/myblog/?p=postnameは - 完全にnginxのリバースプロキシは、ディレクトリではなく、パラメータとして要求を転送するかのようにです

に動作します。なにか提案を?ありがとう!

+0

なぜ、別のnginxサーバー/インスタンスからのプロキシとしてコンテンツを配信するために別のnginxサーバーを使用しているのですか?キャッシュ専用の場合は、たとえばnginxのFastCGIキャッシュをPHP-FPMのプロキシとして動作させるだけでなく、同じサーバ上で使用する方がよいでしょう。それはより性能が高く、より信頼性があります。 あなたが別の理由でそれを行っている場合は、どのパーマリンク戦略を使用しようとしているのか、どちらがうまく動作していないのかを指定できますか? – ablopez

+0

質問の 'subdir'の目的、あるいは' http:// hostname/myblog' URIが '/ subdir/myblog /'への道のりをどのように見つけたのか分かりません。 –

+0

@ablopezこんにちは!私はそれを明確にするために質問を更新しました。プレーンpermalinksは、IPアドレスとホスト名の両方の設定で動作します。 Postname permalinksは、IP経由で直接アクセスする場合にのみ機能します。 –

答えて

0

は、[OK]を私は私の以前の設定はこれだったし、うまくいかなかったのnginx-Bサーバ

location /myblog { 
     root /usr/share/nginx/html/subdir; 
     try_files $uri $uri/ /myblog/index.php?$args; 
     location ~ \.php$ { 
       fastcgi_split_path_info ^(.+\.php)(/.+)$; 
       fastcgi_index index.php; 
       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       include /etc/nginx/fastcgi_params; 
       fastcgi_param SCRIPT_FILENAME $request_filename; 
     } 
} 

にこれを適用することによって、私の問題を解決するために管理しました。

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

また、これは動作しませんでした。ルートエントリではありません。 myblogの部分はそこにあるべきではなく、myblogはtry_filesに含まれるべきです。

location /myblog { 
root /usr/share/nginx/html/subdir/myblog; 
    try_files $uri $uri/ /index.php?$args; 
    location ~ \.php$ { 
       fastcgi_split_path_info ^(.+\.php)(/.+)$; 
       fastcgi_index index.php; 
       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       include /etc/nginx/fastcgi_params; 
       fastcgi_param SCRIPT_FILENAME $request_filename; 
     } 
} 
関連する問題