apache限制ip方法
documentroot “/opt/htdocs/www/” servername admin.c1gstudio.com Options IncludesNoExec FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 222.222.222.222 111.111.111.111使用ngx_http_access_module限制ip访问
官方示例 http://wiki.codemongers.com/NginxHttpAccessModule#allow
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; deny all; }改成自已的
location / { allow 127.0.0.1; allow 222.222.222.222;#服务器ip allow 111.111.111.111;#自已电脑的ip deny all; } location ~ .*\.php?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } location ~ ^/cgi-bin/.*\.pl$ { auth_basic “Restricted”; auth_basic_user_file htpasswd; gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped include awstats.conf; } location ^~ /nginx { stub_status on; access_log off; auth_basic “NginxStatus”; auth_basic_user_file htpasswd; } location ~ ^/memcached { access_log off; auth_basic “NginxStatus”; auth_basic_user_file htpasswd; }结果:测试下来非定义的ip还是可以访问。
再修改下正则
location ^~ / { allow 127.0.0.1; allow 222.222.222.222;#服务器ip allow 111.111.111.111;#自已电脑的ip deny all; }结果:非定义的是ip不可以访问了,但php变明文显示,perl是404。
你可以看看 nginx 的文档里面关于 location 的说明。它的匹配方式是 正则表达式 优先级比较高。 就是说,你的 PHP 解析用的是 正则表达式进行匹配,而你要限制的目录不是用正则表达式,所以,就算是要限制的目录,因为PHP还是能被匹配到,所以,还是解析PHP了。所以,如果想解决的话,可能需要把目录也写成正则匹配,而且要放在PHP的前面,否则就会先匹配PHP |
satisfy_any on;
http://www.freebsdchina.org/forum/viewtopic.php?t=42141
使用多级目录将保护目录放在根中
location / { #allow 127.0.0.1; #allow 222.222.222.222;#服务器ip allow 111.111.111.111;#自已电脑的ip deny all; location ~ .*\.php?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } location ~ ^/cgi-bin/.*\.pl$ { auth_basic “Restricted”; auth_basic_user_file htpasswd; gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped include awstats.conf; } location ^~ /nginx { stub_status on; access_log off; auth_basic “NginxStatus”; auth_basic_user_file htpasswd; } location ~ ^/memcached { access_log off; auth_basic “NginxStatus”; auth_basic_user_file htpasswd; } }结果:有效
整个域名需禁止访问可以写在server中
server { listion 80; server_name admin.c1gstudio.com; root /opt/htdocs/www; allow 111.111.111.111;#自已电脑的ip deny all; auth_basic “Nginx_Panel”; auth_basic_user_file htpasswd; location ~ .*\.php?$ { …. } location ^~ /phpmyadmin { satisfy any; access_log off; location ~ .*\.php?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } } location ^~ /memcached { satisfy any; access_log off; location ~ .*\.php?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fcgi.conf; } } }
No Responses (yet)
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.