Nginxサーバーがあり、nginx_vhost.conf
の隠しファイルを無効にしました
## Disable .htaccess and other hidden files
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
ただし、LetsEncryptは.well-known
ディレクトリにアクセスする必要があります。
.well-known
ディレクトリを許可し、他の隠しファイルを拒否するにはどうすればよいですか?
他の解決策は私を助けませんでした。
私の解決策は、.well-known
に negative regex を含めることです。コードブロックは次のようになります。
## Disable .htaccess and other hidden files
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
.well-known
で始まるものを除くすべてのドットファイルをブロックします
PS:私はreturn 404;
もブロックに追加します。
Nginxは、構成ファイルでの出現順に正規表現を使用して場所を適用します。
したがって、このようなエントリを追加するだけでbefore現在の場所が役立ちます。
location ~ /\.well-known {
allow all;
}
Webサイトで、完全なステップバイステップチュートリアル Let's Encrypt with NGINXを使用する方法 を提供しています。
重要な部分は次のとおりです。
Httpsブロックにリスナーはまったく必要ありません。すべてhttpsで行われます。これは、ドメインを制御していることを証明するためだけのものであり、プライベートやシークレットには何の役にも立ちません。
# Answer let's encrypt requests, but forward everything else to https
server {
listen 80;
server_name example.com www.example.com
access_log /var/log/nginx/access.log main;
# Let's Encrypt certificates with Acmetool
location /.well-known/acme-challenge/ {
alias /var/www/.well-known/acme-challenge/;
}
location / {
return 301 https://www.example.com$request_uri;
}
}
上記のリンクの完全なステップバイステップガイド。
これを追加します(前または後):
location ^~ /.well-known/ {
log_not_found off;
}
一致する^~
修飾子は正規表現よりも優先されるため、これを下部に追加することもできます。 the docs を参照してください。
たくさんの設定ファイルがあり、それらにすでに.htaccessの拒否が含まれている場合
location ~ /\.ht { deny all; }
次にすべてのドットファイルを無視する代わりに 、. gitの2番目の無視を追加するだけで
sed -i '/location ~ \/\\.ht { deny all; }/a \ location ~ \/\\.git { deny all; }' /etc/nginx/*