nginx.conf常用配置1

server里的配置信息

先来看看server里涉及有哪些内容:

server {

       listen       80;

       server_name  localhost;

       autoindex  on;

       #charset koi8-r;

       #access_log logs/host.access.log  main;

       location /item/ {

       #       root D:\work;

                proxy_pass http://baike.baidu.com/;

       #       root   html;

       #       index  index.html index.htm  index.jsp;

       }

}

主要介绍server里的相关参数

Listen:这个参数用来设置从哪个端口来接收请求。可以单配ip地址、单配端口,或者是地址与接口一起配置。所以可以有以下几种配法。

listen 127.0.0.1:8000;

listen 127.0.0.1;//没配置端口的话,默认为80端口。

listen 8000;

listen localhost:8000;

另外可以在listen上配置参数default_server,表示为默认的处理服务器。例如:

listen 8000 default_server;

如果没有配置的话,系统默认第一个server作为默认来处理。

 

Server_name:用来设置虚拟服务器。是nginx用来选择处理请求的服务器。

例如:

server {

   server_name example.com *.example.com www.example.*;

}

这里的*号通配符一般(注意这里说的是一般情况,也有例外的)要放在开头与结尾。

也可以使用正则表达式,但要以~开头。例如:

server {

   server_name www.example.com ~^www\d+\.example\.com$;

}

这里如果有多个虚拟服务器,那么在找寻服务器的时候,匹配的优先级是这样:

1、  精确匹配

2、  通配符*开头的匹配

3、  通配符*结尾的匹配

4、  第一个匹配到的正则表达式。

 

Root:为请求添加root目录。

Root放置的位置可以为http、server、location里。不同位置的影响范围不同。http里影响最大,location里影响最小。

例如:

location /i/ {

   root /data/w3;

}

如果请求为“/i/top.gif”,那么最后的文件路径为/data/w3/i/top.gif 。即root目录加到匹配目录之前,类似于添加根目录。

如果是放在server里,则在每个匹配的请求前都会加上root这个根目录。一般根据需求来配置根目录。

 

Location:直接理解为地址。官方提供的文档里,它的后面可以接以下形式的配置:

location [ = | ~ | ~* | ^~ ] uri {... }

location = / {

    [configuration A ]

}

location / {

    [configuration B ]

}

location /documents/ {

    [configuration C ]

}

location ^~ /images/ {

    [configuration D ]

}

location ~* \.(gif|jpg|jpeg)$ {

    [configuration E ]

}

这里对每个符号进行下解释。

=用来表示如果这个等号后面的精确路径匹配到了,那么就结束寻找其他匹配。

这个可以用在高概率匹配到的路径上,节省了后面的查找时间。

^~这个符号表示不会进行正则表达式的匹配

~表示后面是一个正则表达式。

上面的5个路径匹配中,”/”匹配A,”/index.html”匹配B,”documents/document.html”匹配C。”/images/1.gif”匹配D。”/documents/1,jps”匹配E.

 

另外,如果在location后少写了/符号,请求将会被重定向。

一般有这样写法,

location /user/ {

   proxy_pass http://user.example.com;

}

location = /user {

   proxy_pass http://login.example.com;

}

这里再看看官方对proxy_pass的定义。

Proxy_pass需要协议和代理服务器地址,以及一个可选的uri.例如:

proxy_pass http://localhost:8000/uri/;

这里就涉及到了可选uri的问题。

若有uri,则当请求过来时,与location中匹配的目录地址将被proxy_pass中的uri替代。

例如:

location /name/ {

   proxy_pass http://127.0.0.1/remote/;

}

若请求是”/name/index.html”,则会变成http://127.0.0.1/remote/index.html.

 若没有uri,则当请求过来时,请求的URL将直接透传过来。

例如:

location /some/path/ {

   proxy_pass http://127.0.0.1;

}

若请求是”/some/path/index.html”,则uri透传过来后将是http://127.0.0.1/some/path/index.html.

 

另外有一个比较好用的参数alias.

Alias:别名,可以理解为定义一个别名目录,用来替换location中用来匹配的目录地址。

location /i/ {

   alias /data/w3/images/;

}

当请求为”/i/top.gif”时,将会被替代为”/data/w3/images/top.gif”。

 

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值