0%

nginx的if判断语句

使用nginx cache也有很长一段时间了,原来没有想到用nginx cache会有那么多问题存在,还是在实际运用中才发现如下问题的。 首先是要禁止IP访问。我这里直接给它返回403

1
2
3
if ($host ~ "\[0-9\]{1,3}.\[0-9\]{1,3}.\[0-9\]{1,3}.\[0-9\]{1,3}") {
return 403;
}

这个是为了监控需要才加上的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 if ($http_user_agent ~* "monitor") {
break;
}
```
这个是当用户直接访问域名下某个文件时候,那就直接退出
```c
if ($request_uri !~* /$ ){
break;
}
```
下面这些是由于这个网站是多语言网站,当用户语言是中文的时候就返回mirages.dev,但是当用户是手动选择其它语言的时候就不作判断 当用户访问的不是mirages.dev的时候就退出,防止出现循环错误。
```c
if ($host !~* mirages.dev) {
break;
}
```
当用户的referer是mirages.dev的时候就退出,这个为了用户手动选择语言的时候不作判断
```c
if ($http_referer ~ mirages.dev)
{ break;
}
```
当用户浏览器语言是法语的时候就转到french.mirages.dev等等。这里的$http_accept_language就是可以获取用户的浏览器语言,当然还可以$http_accept_encoding等等,只要是用户请求头部分的都是可以用$http_开头的进行获取并进行匹配。
```c
if ($http_accept_language ~* fr) {
rewrite ^/(.*) http://french.mirages.dev redirect;
break;
}
if ($http_accept_language ~* de) {
rewrite ^/(.*) http://german.mirages.dev redirect;
break;
}
if ($http_accept_language !~* zh) {
rewrite ^/(.*) http://english.mirages.dev redirect;
break;
}
```
这个是为了有时候需要用到purge进行推送的使用的方法,具体推送的可以参考之前的文章。
```c
if ($request_method = PURGE) {
rewrite ^(.*)$ /purge$1$is_args$args;
}
  • 本文作者: Timo
  • 本文链接: 1931.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!