我有點羞愧打擾你這麼簡單的問題,但我不明白爲什麼配置nginx沒有強制執行一個子文件夾的簡單拒絕規則,真的希望你能推我到明顯的錯誤。nginx簡單否認規則不強制
所以,設置:我有一個nginx網絡服務器運行,/var/www
是根目錄,並有一些子文件夾。 SSL是強制執行的,因爲我使用的是來自相應文檔的fastcgi源的設置,因爲我使用的是貝卡CalDAV/CardDAV。這是當前工作的配置文件:
server {
listen 443 ssl;
root /var/www;
index index.html index.htm index.php;
server_name mydomain.org;
ssl_certificate /path/to/nginx.crt;
ssl_certificate_key /path/to/nginx.key;
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
allow ::1;
deny all;
}
location ~ ^(.+\.php)(.*)$ {
try_files $fastcgi_script_name =404;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include /etc/nginx/fastcgi_params;
}
rewrite ^/.well-known/caldav /baikal/cal.php redirect;
rewrite ^/.well-known/carddav /baikal/card.php redirect;
charset utf-8;
location ~ /(\.ht|Core|Specific) {
deny all;
return 404;
}
}
現在,我只是想限制訪問一個名爲/my/data/
subsubfolder這是我第一次在否認塊加入這樣的:
location ~ /(\.ht|Core|Specific|my/data/) {
deny all;
return 404;
}
但這並沒有工作了,所以我定義了自己的位置,如:
location ~ /my/data {
deny all;
return 404;
}
嘗試使用和不使用斜線,有和沒有~
像/doc/
以及將任何其他位置塊之前的拒絕位置塊,現在我處於虧損狀態。訪問/my/data
和所有子文件夾和文件仍然被授予。誰能幫我嗎?
感謝您的閱讀!
謝謝你的有益的意見!我清理了整個配置文件並重新排序了位置。最後,我使用'^〜'修飾符,一切正常。感謝您的熱心幫助!! – coroner