Nginx配置日记

nginx 配置日记

1. root与alias 的区别

一般nginx映射资源文件大多数都是这样写

# 被访问的资源目录为/nice/ooxx/路径下的文件
# 写法 1
server {
    location ^~ /ooxx/ {
        root /nice/;
        index index.html index.hml index;
    }
}
# 写法 2
server {
    location ^~ /xxxoodd/ {
        alias /nice/ooxx/;
        index index.html index.hml index;
    }
}

这两种写法都是为了访问/nice/ooxx/路径下的资源文件,但是却有所区别

  1. 写法1的匹配规则是 root + location的到请求资源的路径,
  2. alias 之间将请求xxxoodd的路径改名为/nice/ooxx/ + 请求url去除location部分的内容(如请求的路径是/xxxoodd/nice.html那么真实访问的路径是/nice/ooxx/nice.html。location的内容被截断,并将后面的内容映射到alias路径的后面)
  3. alias 后面跟随的路径必以“/”结尾,否则无法请求到对应的路径
2. nginx 映射文件路径

写法如下

server {
    listen 80;
    charset utf-8;
    location /nice/ {
        root /data/nice/imgs;
        autoindex on;  # 显示目录
        autoindex_excat_size on; # 显示文件大小
        autoindex_locationtime on; # 显示文件的修改时间
    }
}
3. nginx中的server_name

nginx配置中的server_name用于区分通过不同域名发来的请求访问不同的服务。可能比较绕举个例子
假设你有个IP:10.143.110.110有两个域名都映射到了这个IP上分别是www.nice1.com和www.nice2.com
如果你想同请求的域名来去分,当请求是通过www.nice1.com访问时,将请求转发到服务A(www.a.com),如果是通过www.nice2.com域名访问的将请求转发到服务B(www.b.com)该怎么做?
这时server_name就派上用场了将配置改成如下:

server {
    listen 80;
    charset utf-8;
    server_name www.nice1.com;
    location / {
    	proxy www.a.com;
    }
}
server {
   listen 80;
   server_name www.nice2.com;
   location / {
       proxy www.b.com;
   }
}

这样就可以通过域名区分请求了
注意: 通过server_name设置后只能通过server_name设置的域名来请求服务,其他的域名的请求是没法请求到的。
如:通过IP去请求curl 10.143.110.110。返回404。

4. nginx的正则
符号描述
\转义字符将特殊字符如要转义正则中的?字符,在正则中应这样写 \\\\?
^匹配字符串的开始位置,如匹配以/vip/nice开头的字符串,正则应这样写 ^/vip/nice.*
$匹配字符串的结束位置,如匹配以/vip/nice结尾的字符串,正则应这样写 .*/vip/nice$
.匹配出换行符’\n’以外的所有单个字符
*匹配前面字符的0次或多次
+匹配前面字符的1次或多次
?匹配前面字符的0次或1多次
(pattern)括号内匹配的内容,取值时,通常$1、$2、$3… 数字为取第几个括号匹配到的内容
5. rewrite的使用

rewrite是本质是实现请求的重定向(请区分请求转发、重定向的区别)
使用语法:rewrite <regex> <replacement[flag]>;
应用位置:server、location、if
示例:

# 将指定url前缀的请求转发到其他的服务器上
server {
    listen 80;
    charset utf-8;
    server_name www.nice.com;
    location /web/s/ {
        # $1 表示取(.*)匹配到的内容, 如果后面还有(...)则为$2、$3 ...
    	rewrite ^/(.*)$ www.baidu.com/$1 permanent;
    }
}

rewrite 最后的flag参数:

标记符号说明
last本条规则匹配完成后继续向下匹配新的location URI规则
break本条规则匹配完成后终止,不在匹配任何规则
redirect返回302临时重定向
permanent返回301永久重定向
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值