web-dev-qa-db-ja.com

NginxはHTTPS経由で静的ファイルを提供しません

Apacheの前にNginxをリバースプロキシとして設定し、静的ファイルを提供しようとしています。 I 301 httpからhttpsに、エイリアスを介して静的フォルダーを提供するためのディレクティブをhttpsセクションに提供します。ただし、奇妙な理由で、ファイルはhttp経由で提供されます。

これが私のNginxサイト設定です:

    server {
            listen   80; 
            listen   [::]:80;
            access_log off;
            server_name site.com www.site.com;
            return 301 https://$server_name$request_uri;

        }

    server {
            listen   443;
            ssl on;

            ssl_certificate /usr/local/sslcert/my.crt;
            ssl_certificate_key /usr/local/sslcert/my.key;

            access_log off;
            server_name site.com www.site.com;


            location /public/ {
            alias /var/www/public/;
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public";
            }


            location / {

            root /var/www/;
            index index.php

            client_max_body_size    10m;
            client_body_buffer_size 128k;

            proxy_send_timeout   90;
            proxy_read_timeout   90;
            proxy_buffer_size    128k;
            proxy_buffers     4 256k;
            proxy_busy_buffers_size 256k;
            proxy_temp_file_write_size 256k;
            proxy_connect_timeout 30s;

            proxy_redirect  off;

            proxy_pass   http://127.0.0.1:3333/;

            proxy_set_header   Host   $Host;
            proxy_set_header   X-Real-IP  $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            }



            location /Push {
            root /var/www/;
            rewrite /Push(.*) /$1 break;
            proxy_pass https://127.0.0.1:8332/Push/;
            proxy_redirect off;
            proxy_set_header Host $Host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }

             location ~ /\.ht {
                    deny all;
            }
    }

何が足りないのですか?

1
user3521621

したがって、問題は実際にはZend FrameworkBaseUrl設定にありました。私はそれを削除しました、そしてすべてが今働いています。

1
user3521621

これは問題の実際の理由ではないかもしれませんが、とにかく問題を引き起こします。

ロケーションブロック内でrootを使用していますが、これは一般的にうまく機能しません。

この構成を試してください:

server {
        listen   80; 
        listen   [::]:80;
        access_log off;
        server_name site.com www.site.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        ssl_certificate /usr/local/sslcert/my.crt;
        ssl_certificate_key /usr/local/sslcert/my.key;

        access_log off;
        server_name site.com www.site.com;

        root /var/www;

        location /public/ {
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public";
        }

        location / {
            index index.php

            client_max_body_size    10m;
            client_body_buffer_size 128k;

            proxy_send_timeout   90;
            proxy_read_timeout   90;
            proxy_buffer_size    128k;
            proxy_buffers     4 256k;
            proxy_busy_buffers_size 256k;
            proxy_temp_file_write_size 256k;
            proxy_connect_timeout 30s;

            proxy_redirect  off;

            proxy_pass   http://127.0.0.1:3333/;

            proxy_set_header   Host   $Host;
            proxy_set_header   X-Real-IP  $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /Push {
            rewrite ^/Push(.*) /$1 break;
            proxy_pass https://127.0.0.1:8332/Push/;
            proxy_redirect off;
            proxy_set_header Host $Host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

         location ~ /\.ht {
                deny all;
        }
}

変更点:

  • Ssl定義をリッスンラインに移動しました
  • SSLセクションにIPv6を追加
  • rootディレクティブをサーバーレベルに移動しました
  • ロケーションブロックから不要なaliasおよびroot定義を削除し、サーバーレベルのrootディレクティブがこれらをカバーします
  • 行の開始を追加^プッシュrewriteルールに。
0
Tero Kilkanen