注意,nginx 的 http auth basic 的密碼是用 crypt(3) 加密的,而apache是md5加密。所以生成時:
htpasswd -b -c site_pass username password
例如:基于整個網站的認證,auth_basic在php解釋之前。
server {
listen 80;
server_name www.co197.com 0597seo.com;
root /wwwroot/0597seo.com;
index index.html index.htm index.php;
auth_basic "auth";
auth_basic_user_file /usr/local/nginx/auth/nginx_passwd;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
access_log /logs/0597seo.com_access.log main;
}
針對目錄的認證,在一個單獨的location中,并且在該location中嵌套一個解釋php的location,否則php文件不會執行并且會被下載。
auth_basic在嵌套的location之后。
server {
listen 80;
server_name www.co197.com 0597seo.com;
root /wwwroot/0597seo.com;
index index.html index.htm index.php;
location ~ ^/phpMyAdmin/.* {
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
auth_basic "auth";
auth_basic_user_file /usr/local/nginx/auth/auth_phpMyAdmin;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
access_log /logs/0597seo.com_access.log main;
}
這里注意,就是location ~ ^/phpMyAdmin/.* {…} 保護phpMyAdmin目錄下的所有文件。
如果你只設了/phpMyAdmin/ 那么直接輸入/phpMyAdmin/index.php還是可以訪問并且運行的。
^/phpMyAdmin/.* 意為保護該目錄下所有文件。
發表評論