私はApacheからnginxに切り替えたばかりですが、まだまだ使い慣れています。Nginxの設定が正しく動作しない
私はこの設定があるPagekitサイト実行しているよ:Unforunately https://gist.github.com/DarrylDias/be8955970f4b37fdd682
server {
listen 80;
listen [::]:80;
# SSL configuration
listen 443 ssl;
listen [::]:443 ssl;
ssl on;
ssl_certificate /etc/ssl/private/mydomain.com.crt;
ssl_certificate_key /etc/ssl/private/mydomain.com.private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_client_certificate /etc/ssl/private/cloudflare.origin-pull-ca.pem;
ssl_verify_client on;
server_name mydomain.com www.mydomain.com;
root /home/vhosts/domains/mydomain.com/public/;
index index.php;
# Leverage browser caching of media files for 30 days
location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff)\$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
}
location/{
try_files $uri $uri/ /index.php?$args;
}
# Deny access to sensitive folders
location ~* /(app|packages|storage|tmp)/.*$ {
return 403;
}
# Deny access to files with the following extensions
location ~* \.(db|json|lock|dist|md)$ {
return 403;
}
# Deny access to following files
location ~ /(config.php|pagekit|composer.lock|composer.json|LICENSE|\.htaccess) {
return 403;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param HTTP_MOD_REWRITE On;
}
}
を、(私を含め)多くは、彼らがしているので、このようなjs|css|jpg|<etc>
などの拡張子を持つファイルが403
応答を得ているという問題がありますいずれかのapp or packages
ディレクトリ内にあります。
私は、これらのファイルのlocation
にnginxのより高い優先順位を付けるようにしようとしましたが、何の効果もなかったようです。
これらの種類のファイルを許可するためにこの設定ファイルを変更する必要がありますが、それらのディレクトリ内の他のすべてのファイルに対して403を返しますか?
EDIT:ファイルURLはhttps://example.com/app/js/something.min.js?v=1921
のように見えますが、?v=1921
のためにおそらく動作しませんか? nginx's documentによると
クエリ文字列は 'location'ブロックと一致しません。あなたのnginxサーバーは、いくつかの種類のCDNの後ろにありますか?これらのCDNサーバーのキャッシュによって発生する可能性があります。 URLをhttps://example.com/app/js/something.min.js?v=1922に変更して、キャッシュをバイパスしてみてください。 –
私はcloudflareを使用していますが、自分自身を開発モードにしてキャッシュをクリアするようにしました。私は事実を知っていますが、URLはページキットそのもののためにそうです。 – xorinzor
キャッシュはCloudflareによってサーバー側に保管されているため、ブラウザー開発モードのみが実際には機能しません。おそらく、バージョン番号を "1921"から他の文字列に変更して、最後の 'location'を上に移動した後に動作するかどうかを確認するだけです。 –