1.nginx怎么配置IP和域名都能访问
1、添加server_name为空或者localhostserver {listen 80;server_name localhost;location / {if ($host ~ localhost) {return 403;}}}2、添加server_name为yourdnsserver{access_log /data/logs/nginx/access。
log;listen 80;server_name yourdns;charset utf-8;root /data/plete 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; 使用多级目录将保护目录放在根中 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/ 放在 / 放在 /, example2.com 放到 nginx 可以访问的目录 /.conf,example2.com.conf, 并把配置文件放到 /usr/local/nginx/vhosts/ 然后在 /usr/local/nginx/nginx.conf 里面加一句 include 把步骤2创建的配置文件全部包含进来(用 * 号) 重启 nginx1、打开 /usr/local/nginx/nginix.conf 文件,在相应位置加入 include 把以上2个文件包含进来 user .conf 的文件,把以下内容拷进去 server { listen 80; server_name example1.com ; access_log /; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME //$fastcgi_script_name; include fastcgi_params; } location ~ /.ht { deny all; } }3、在 /usr/local/nginx/vhosts/ 里创建一个名字为 example2.com.conf 的文件,把以下内容拷进去 server { listen 80; server_name example2.com ; access_log /; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME //$fastcgi_script_name; include fastcgi_params; } location ~ /.ht { deny all; } }5、重启 Nginx/etc/init.d/nginx restart 方法二:动态目录方法(优点是方便,每个域名对应一个文件夹,缺点是不灵活) 这个简单的方法比起为每一个域名建立一个 vhost.conf 配置文件来讲,只需要在现有的配置文件中增加如下内容:# Replace this port with the right one for your requirements# 根据你的需求改变此端口 listen 80; #could also be 1.2.3.4:80 也可以是1.2.3.4:80的形式# Multiple hostnames seperated by spaces. Replace these as well.# 多个主机名可以用空格隔开,当然这个信息也是需要按照你的需求而改变的。
server_name star.yourdomain.com *.yourdomain.com ; access_log logs/star.yourdomain.com.access.log; location / { root /PATH/TO/WEBROOT/$host/; index index.php; }# serve static files directly# 直接支持静态文件 (从配置上看来不是直接支持啊) location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires 30d; } location ~ .php$ {# By all means use a different server for the fcgi processes if you need to# 如果需要,你可以为不同的FCGI进程设置不同的服务信息 fastcgi_pass 127.0.0.1:YOURFCGIPORTHERE; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /PATH/TO/WEBROOT/$host/$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; } location ~ /.ht { deny all; } 最后附另外一个二级域名匹配的方法 绑定域名 server_name *.abcd.com; 获取主机名 if ( $host ~* (.*).(.*).(.*)) { 。
6.nginx如何配置域名
方法一:多个.conf方法(优点是灵活,缺点就是站点比较多配置起来麻烦)这里以配置2个站点(2个域名)为例,n 个站点可以相应增加调整,假设:IP地址: 192.168.1.100域名1 example1.com 放在 / 放在 /, example2.com 放到 nginx 可以访问的目录 /.conf,example2.com.conf, 并把配置文件放到 /usr/local/nginx/vhosts/然后在 /usr/local/nginx/nginx.conf 里面加一句 include 把步骤2创建的配置文件全部包含进来(用 * 号)重启 nginx1、打开 /usr/local/nginx/nginix.conf 文件,在相应位置加入 include 把以上2个文件包含进来user .conf 的文件,把以下内容拷进去server { listen 80; server_name example1.com ; access_log /; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME //$fastcgi_script_name; include fastcgi_params; } location ~ /.ht { deny all; }}3、在 /usr/local/nginx/vhosts/ 里创建一个名字为 example2.com.conf 的文件,把以下内容拷进去server { listen 80; server_name example2.com ; access_log /; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME //$fastcgi_script_name; include fastcgi_params; } location ~ /.ht { deny all; }}5、重启 Nginx/etc/init.d/nginx restart方法二:动态目录方法(优点是方便,每个域名对应一个文件夹,缺点是不灵活)这个简单的方法比起为每一个域名建立一个 vhost.conf 配置文件来讲,只需要在现有的配置文件中增加如下内容:# Replace this port with the right one for your requirements# 根据你的需求改变此端口listen 80; #could also be 1.2.3.4:80 也可以是1.2.3.4:80的形式# Multiple hostnames seperated by spaces. Replace these as well.# 多个主机名可以用空格隔开,当然这个信息也是需要按照你的需求而改变的。
server_name star.yourdomain.com *.yourdomain.com ;access_log logs/star.yourdomain.com.access.log;location / {root /PATH/TO/WEBROOT/$host/;index index.php;}# serve static files directly# 直接支持静态文件 (从配置上看来不是直接支持啊)location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html)$ {access_log off;expires 30d;}location ~ .php$ {# By all means use a different server for the fcgi processes if you need to# 如果需要,你可以为不同的FCGI进程设置不同的服务信息fastcgi_pass 127.0.0.1:YOURFCGIPORTHERE;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /PATH/TO/WEBROOT/$host/$fastcgi_script_name;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH $content_length;fastcgi_intercept_errors on;}location ~ /.ht {deny all;}最后附另外一个二级域名匹配的方法绑定域名server_name *.abcd.com;获取主机名if ( $host ~* (.*).(.*).(.*)){set $domain $1;}定义目录r。
7.如何在Windows上配置并运行Nginx
去nginx官网下载免安装的zip包解压到某一目录下 例 E:/server/nginx-1.7.2双击nginx.exe就启动了nginx服务配置文件在conf目录下的nginx.conf可以做虚拟域名等配置为了方便开启和关闭nginx服务,可以写两个bat文件新建一个start_nginx.bat文件,编辑这个文件输入@echo offcd /d E:\server\nginx-1.7.2\ #以自己的实际目录为准 start nginx.exeexit新建一个stop_nginx.bat文件,编辑输入@echo off::windows 2000,98::tskill /A nginx > nul::windows xp above:taskkill /F /IM nginx.exe > nulexit这样双击start_nginx.bat就开启nginx服务, 双击stop_nginx.bat就关闭nginx注意事项: nginx默认是80端口 如果windows系统是win10 , win10系统中有一个服务默认开启用的也是80端口,会导致nginx服务启不起来, 启动nginx之前要把这个服务先关掉 位置在windows服务中名叫: World Wide Web Publishing Service 把这个服务关闭 启动类型设置为手动就可以了。
转载请注明出处windows之家 » win10nginx设置域名