nginx的location语法规则

语法规则: location [=||*|^~] /uri/ { … }

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头

~ 开头表示区分大小写的正则匹配 以xx结尾

~* 开头表示不区分大小写的正则匹配 以xx结尾

!和!*分别为区分大小写不匹配及不区分大小写不匹配 的正则

/ 通用匹配,任何请求都会匹配到。

首先精确匹配 = 其次以xx开头匹配^~ 然后是按文件中顺序的正则匹配 最后是交给 / 通用匹配。

当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

其中“~ ”和“*”以及“!”和“!~*”前缀表示正则location .
其他前缀(包括:“=”,“^~”和“@ ”)和无任何前缀的都属于普通location .

一些常用的配置
1、普通的(静态的)http服务器

这样如果访问http://localhost 就会默认访问到E盘wwwroot目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。

server {
listen 80;
server_name localhost;
client_max_body_size 1024M;

location / {                
       root   e:wwwroot;            //思路:通过/将所有的请求,转发给root处理
       index  index.html;
   }

}

2、反向代理

localhost的时候,就相当于访问localhost:8080了

server {
listen 80;
server_name localhost;
client_max_body_size 1024M;

location / {
    proxy_pass http://localhost:8080;   
    proxy_set_header Host $host:$server_port;    //思路:通过/,将所有的请求,转发给第3方处理
}

}
既然服务器可以直接HTTP访问,为什么要在中间加上一个反向代理,不是多此一举吗?反向代理有什么作用?

负载均衡、虚拟主机等,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。

3、Redirect(重定向)语法

server {
listen 80;
server_name start.igrow.cn;
index index.html index.php;
root html;
if (" {
rewrite ^(.*) http://star.igrow.cn$1 redirect;
}
}

4、防盗链

location ~* .(gif|jpg|png|bmp)invalid_referer) {
return 403;
#rewrite ^/ http://www.ttlsa.com/403.jpg;
}
}
5、根据文件类型设置过期时间

location ~* .(js|css|jpg|jpeg|gif|png|swf)request_filename) { //只能是文件,因为这用-f判断了
expires 1h;
break;
}
}

6、设置图片缓存(过期)时间

7、禁止访问某个目录

location ~* .(txt|doc)${
root /data/www/wwwroot/linuxtone/test; #所有用户都禁止访问这个目录
deny all;
}

8、隐藏版本号的作用

通过你所用的版本,找其漏洞,进行攻击你

在http中添加该配置:server_tokens off;

9、配置https

1、去阿里云/腾讯云申请免费的

2、下载证书

3、证书放到/usr/local/nginx目录下(就是和conf同级,nginx.conf默认的配置文件的上一级)

4、在vhost目录下加入配置文件

server {
listen 443;
server_name lampol.edu0532.cn; #改域名
ssl on;
root /home/www/xcxtp5/public; #改项目路径
ssl_certificate ../certbo/1523694051089.pem; #改证书路径
ssl_certificate_key ../certbo/1523694051089.key; #改私钥路径
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
index index.html index.htm index.php;
autoindex on;
# 伪静态配置
if (!-e /index.php?s=$1 last;
break;
}
}

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi.conf;
    }

}
10、动静分离

思路:动、静态的文件,请求时匹配不同的目录

当访问gif,jpeg时 直接访问e:wwwroot;,正则自行配置

server {
listen 80;
server_name localhost;

location / {
root e:wwwroot;
index index.html;
}

所有静态请求都由nginx处理,存放目录为html

location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root e:wwwroot;
}

所有动态请求都转发给tomcat处理

location ~ .(jsp|do)$ {
proxy_pass http://test;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root e:wwwroot;
}
}


作者:杨西瓜
来源:CSDN
原文:https://blog.csdn.net/qq_33862644/article/details/79337348
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NGINXlocation指令是配置文件的关键部分,用于定义服务器或虚拟主机上URL路径(URI)与处理请求的特定块之间的映射关系。location规则是基于URI路径、正则表达式、主机名、端口号等条件来匹配请求的。以下是location规则的一些详细规则: 1. **基本语法**: ``` location /path/ { // 处理规则 } ``` 这里 `/path/` 是路径,所有匹配该路径的请求将被这里的配置处理。 2. **路径匹配**: - **精确匹配**: `/file.html` 会精确匹配到指定的文件。 - **通配符**: `*`, `**` 用于匹配任意路径和目录,如 `/images/*` 匹配 `/images/file.jpg`。 3. **正则表达式匹配**: 使用 `~` 或 `~*` 符号可以使用正则表达式进行路径匹配。例如 `location ~ \.php$ {}` 可以匹配所有以 `.php` 结尾的路径。 4. **主机名和端口匹配**: - `host`: `location = /path/ { ... }` 只对特定主机生效。 - `$host`: `location = $host/path/ { ... }` 对当前请求的主机生效。 - `server_name`: 配置虚拟主机时,可以指定多个域名或通配符。 5. **路径后缀匹配**: `try_files` 命令用于尝试查找文件的位置,如果第一个位置不存在,则尝试下一个。例如: ``` try_files $uri $uri/ =404; ``` 6. **条件指令**: - `if` 语句可以用来根据条件动态改变location的行为。 - `break` 和 `return` 关键字用于跳出当前location或整个location块。 7. **内置变量**: 可以使用 `$request_uri`, `$document_root`, `$scheme` 等内置变量进行匹配或处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值