4

Web サイトの一部のリダイレクトにプロキシ パス ポートが含まれていて、それらが役に立たなくなるという問題があります。私の構成は次のとおりです。

物理サーバー 1:

server {
    server_name example.com www.example.com;

    location / {
            proxy_pass              http://1.1.1.1:50493;
            proxy_set_header        X-Real-IP  $remote_addr;
            proxy_set_header        Host "example.com";
    }
}

物理サーバー 2:

server {
            listen 50493;
            server_name example.com www.example.com;

            set_real_ip_from    1.1.1.1;

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

            location / {
                    if ($http_host !~ "^example.com"){
                            set $rule_0 1$rule_0;
                    }
                    if ($rule_0 = "1"){
                            rewrite ^/(.*) http://example.com/$1 permanent;
                    }
                            rewrite /[^/]+/([0-9]+)-[^/]+.html http://example.com/showthread.php?t=$1 permanent;
            }

            location ~ .php$ {
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME /var/www/example.com$fastcgi_script_name;
              include fastcgi_params;
              fastcgi_read_timeout 600s;
              fastcgi_buffer_size 512k;
              fastcgi_buffers 16 512k;
            }
   }

通常、ブラウジングは問題なく動作します。サイトは期待どおりに閲覧できます。ただし、リダイレクトする一部のリンク (たとえば、ログイン アクションの後) は、ポート 50493 が含まれるリンクにリダイレクトされます。たとえば、 http://example.com:50493/index.phpを取得します。それはうまくいきません。私の質問は、ポートを削除するにはどうすればよいですか?

私が知る限り、フォーラム ソフトウェアは php セッション ポート変数からポートを取得します。port_in_redirect をオフに設定しようとしましたが、役に立ちませんでした。それが役立つ場合は、ここで強調表示されている問題: http://kb.parallels.com/en/114425も同様です。

ありがとうございました。

4

3 に答える 3

5

あなたのnginx.confで

http {

port_in_redirect off;

}
于 2013-07-18T15:01:30.737 に答える
0

try substitution on the fly

HttpSubModule

sub_filter      
  'example.com:50493/' 'example.com/' ;
sub_filter_once off;

this should do the trick.

于 2013-05-26T13:21:20.300 に答える
0

あなたが提供したリンクで問題を解決する方法を教えてくれます。変化する:

<?php echo $VAR->domain->asciiName ?>:<?php echo $OPT['ssl'] ? $VAR->server->webserver->httpsPort : $VAR->server->webserver->httpPort ?>"

<?php echo $VAR->domain->asciiName ?>"

これは、Nginx ではなくアプリケーションで修正する必要があります。

アプリケーションは、このようにポート 50493 を指すリンクを生成しています。すべての HTML を通過して置き換えるコンテンツ フィルターをセットアップする場合を除き、アプリケーション内example.com:50493/path/of/urlexample.com/path/of/urlそれを修正する必要があります。

于 2013-05-24T00:40:15.230 に答える