2

2 つの nginx サーバーがあります。最初のサーバーは、 経由でリクエストを受信しますwww.example.com/partner。彼は、php+fastCgi が構成されている 2 番目のサーバーに要求全体を送信します。2 番目のサーバーからの Nginx アクセス ログ:

"GET /パートナー/ HTTP/1.0" 200 2845

2番目のサーバーには、次のような仮想ホストがあります。

server {
       listen my.ip:80;
       server_name www.example.com;
       root /var/www/example;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://www.example.com$request_uri permanent;
       }

       index index.php index.html;


       location = /partner/favicon.ico {
                log_not_found off;
                access_log off;
                expires max;
       }


        location @nocache {
                try_files $uri $uri/ /index.php?$args;
       }
       location = /partner/robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       location ^~ /partner/typo3temp/tx_ncstaticfilecache {
                expires 43200;
                charset utf-8;
       }

       location = /partner/clear.gif {
                empty_gif;
                expires max;
       }
       location ^~ /partner/typo3/gfx {
                expires max;
       }
       location ^~ /partner/typo3temp/compressor {
                expires max;
       }   

    location /partner {    


                if ($query_string ~ ".+") {
                        return 405;
                }
                # pass requests from logged-in users to PHP
                if ($http_cookie = 'nc_staticfilecache|be_typo_user' ) {
                        return 405;
                } # pass POST requests to PHP
                if ($request_method !~ ^(GET|HEAD)$ ) {
                        return 405;
                }
                if ($http_pragma = 'no-cache') {
                        return 405;
                }
                if ($http_cache_control = 'no-cache') {
                        return 405;
                }
                error_page 405 = @nocache;

                # serve requested content from the cache if available, otherwise pass the request to PHP
                try_files /typo3temp/tx_ncstaticfilecache/$host${request_uri}index.html @nocache;


       location ~* \.(sql|htaccess|htpasswd|tpl|html5|xhtml) {
                deny all;
       }

       location ~*  \.(jpg|jpeg|png|gif|css|js|ico)$ {
                expires max;
                log_not_found off;
       }

       location ~* \.(cur|ico|gif|png|jpe?g|css|js|swf|woff)((\?\d\d\d\d\d\d\d\d\d\d)|(\?s=\d\d\d\d\d\d\d\d\d\d))$ {
                expires max;
                log_not_found off;
       }
       location ~* \.(cur|ico|gif|png|jpe?g|css|js|swf|woff)(\?v\d\d?\.\d\d?\.\d\d?)$ {
                expires max;
                log_not_found off;
       }
       location ~* ^(/typo3/sysext|/typo3conf/ext).*\.(cur|ico|gif|png|jpe?g|css|js|swf|woff) {
                expires max;
                log_not_found off;
       }



       location ~ /\. {
                deny all;
                access_log off;
                log_not_found off;
       }

       location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_index index.php;
       }
    }
}

私が得る問題と403エラー。何が間違っているのですか?

4

1 に答える 1

1

php ファイルがダウンロードされる最も可能性の高い理由は、php 処理ロケーション ブロックが別のロケーション ブロックの下にネストされているためです (これは、php が正しくセットアップされていることを前提としています)。

全体として、あなたの設定は非常に複雑に見えます。実行しているタスクは、はるかに簡単な設定で実行できると確信しています。

基本的なクリーンアップ/統合を行いましたが、全体像がわかりません。一部のビットがオフになっている可能性があります。ただし、いくつかのアイデアを提供する必要があります。

ただし、PHP に関して重要なことは、ネストされた場所から引き出すことです。

また、リダイレクトに 405 の代わりにステータス コード 418 を使用すると、405 は他の理由で正当に生成される可能性があります。

パフォーマンスを向上させるために、example.com から www.example.com へのリダイレクトに別のサーバー ブロックを使用します。

server {
    listen my.ip:80;
    server_name example.com;
    rewrite ^ http://www.example.com$request_uri? permanent;
}

server {
    listen my.ip:80;
    server_name www.example.com;
    root /var/www/example;
    index index.php index.html;
    error_page 418 = @nocache;

    if ($query_string ~ ".+") {
        return 418;
    }
    # pass requests from logged-in users to PHP
    if ($http_cookie = 'nc_staticfilecache|be_typo_user' ) {
        return 418;
    } 
    # pass POST requests to PHP
    if ($request_method !~ ^(GET|HEAD)$ ) {
        return 418;
    }

    location = /partner/robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ^~ /partner/typo3temp/tx_ncstaticfilecache {
        expires 43200;
        charset utf-8;
    }

    location = /partner/clear.gif {
        empty_gif;
        expires max;
    }

    location ^~ /partner/typo3/gfx {
        expires max;
    }
    location ^~ /partner/typo3temp/compressor {
        expires max;
    }

    location /partner {
        # serve requested content from the cache if available, 
        # otherwise pass the request to PHP
        try_files /typo3temp/tx_ncstaticfilecache/$host${request_uri}index.html @nocache;
    }

    location ~* \.(sql|tpl|html5|xhtml) {
        deny all;
    }

    location ~*  \.(jpg|jpeg|png|gif|css|js|ico)(.*)$ {
        expires max;
        log_not_found off;
    }

    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    location ~ \.php$ {
        return 418;
    }

    location @nocache {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;            
    }
}
于 2012-04-28T23:02:40.877 に答える