nginx配置

结构

最外层包裹Http,

    头部设置gzip,cache-corntrol等信息

然后内部每个域名对应一个server

    http{

        gzip on; gzip_min_length 2k; gzip_buffers 4 16k; gzip_http_version 1.0;     gzip_comp_level 3; gzip_types text/plain application/x-javascript text/css     application/xml text/javascript application/x-httpd-php image/jpeg image/gif     image/png; gzip_vary on; 

    add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS;  

            server{

                    listen 80        ;                //一般http的对外暴露的接口

                        root  /usr/share/nginx     ;//设置的目录 (当是对端口进行域名代理的时候 可以不用);

                                                       

        }

}  


1:根域名和二级域名

        @和www都要配



2:配置PHP环境


3:配置目录访问

 使用alias时,目录名后面一定要加"/" 访问时会被替换掉 而root可不加

location /name{

            alias /实际访问的目录/

           try_files $uri  $uri/  /实际文件夹名称/index.html;

    }     

如果当前目录下 则不需要alias

4:配置端口访问和正向代理

listen 80;

server_name  node.sss.com;

     location /second/ {

            proxy_pass http://127.0.0.1:2222/;

            proxy_redirect  off;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection 'upgrade';

            proxy_set_header Host $host;

            proxy_cache_bypass $http_upgrade;

        }

看是否带uri

如果只是域名+端口 则为不带uri 为添加

带/或者之后有啥对象 就是替换


proxy_pass 后面带/代表根目录 不会带上location的

 不带/代表相对路径 会在路径前面加上

5:缓存设置



规则等:

    一 Nginx的location语法

1location [=|~|~*|^~] /uri/ { … }

=         严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求

~         区分大小写匹配(可用正则表达式)

~*       不区分大小写匹配(可用正则表达式)

!~       区分大小写不匹配

!~*     不区分大小写不匹配

^~      如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式

示例1:

location  / { }

匹配任意请求

 示例2:

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

    rewrite .(gif|jpg|jpeg)$ /logo.png;}

不区分大小写匹配任何以gif、jpg、jpeg结尾的请求,并将该请求重定向到 /logo.png请求

示例3:

location ~ ^.+\.txt$ {

    root /usr/local/nginx/html/;}

区分大小写匹配以.txt结尾的请求,并设置此location的路径是/usr/local/nginx/html/。也就是以.txt结尾的请求将访问/usr/local/nginx/html/ 路径下的txt文件

二 alias与root的区别

root    实际访问文件路径会拼接URL中的路径

alias   实际访问文件路径不会拼接URL中的路径

示例如下:

location ^~ /sta/ { 

  alias /usr/local/nginx/html/static/; 

}

请求:http://test.com/sta/sta1.html

实际访问:/usr/local/nginx/html/static/sta1.html 文件

location ^~ /tea/ { 

  root /usr/local/nginx/html/;  }

请求:http://test.com/tea/tea1.html

实际访问:/usr/local/nginx/html/tea/tea1.html 文件

三 last 和 break关键字的区别

(1)last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异

(2)last 和 break 当出现在location 内部时:

last        使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚才的行为

break    使用了break 指令,rewrite后不会跳出location 作用域,它的生命也在这个location中终结

四 permanent 和 redirect关键字的区别

rewrite … permanent   永久性重定向,请求日志中的状态码为301

rewrite … redirect         临时重定向,请求日志中的状态码为302

五 综合实例

将符合某个正则表达式的URL重定向到一个固定页面

比如:我们需要将符合“/test/(\d+)/[\w-\.]+” 这个正则表达式的URL重定向到一个固定的页面。符合这个正则表达式的页面可能是:http://test.com/test/12345/abc122.html、http://test.com/test/456/11111cccc.js等

从上面的介绍可以看出,这里可以使用rewrite重定向或者alias关键字来达到我们的目的。因此,这里可以这样做:

(1)使用rewrite关键字:

location ~ ^.+\.txt$ {

    root /usr/local/nginx/html/;}

location ~* ^/test/(\d+)/[\w-\.]+$ {    rewrite ^/test/(\d+)/[\w-\.]+$ /testpage.txt last;

}

这里将所有符合条件的URL(PS:不区分大小写)都重定向到/testpage.txt请求,也就是 /usr/local/nginx/html/testpage.txt 文件

(2)使用alias关键字:

location ~* ^/test/(\d+)/[\w-\.]+$ {    alias /usr/local/nginx/html/static/sta1.html;

}




~ 和 ~* 为正则location

=、^~、@和无任何前缀的都属于普通location,另外,@是用作服务端内部的一种转发行为,很少用,在此不做讨论。


先普通,再正则

普通location之间的匹配顺序:按最大前缀匹配 //越多越好

如location /a/{},location /a/b/ {},请求 http://a/b/c.html 匹配的是 location /a/b/ {}

正则location之间的匹配顺序:按配置文件中的物理顺序匹配,只要匹配到一条正则,就不再考虑后面的

若普通location匹配到 精确匹配= 或 非正则匹配 ^~, 则不再进行后续的正则匹配

普通location与正则location之间的匹配结果选择

普通location先匹配,匹配到了结果,只是一个临时结果;

会继续正则location的匹配,

如果匹配到正则,则用匹配到的正则结果;

如果没有匹配到正则,则继续用普通匹配的那个结果

综上,常规的顺序是匹配完普通location,还要继续匹配正则location,但是,也可以告诉nginx,匹配到了普通location,就不要再搜索匹配正则location了,通过在普通location前面加上^~符号,^表示非,~表示正则,^~就是表示不要继续匹配正则。

除了^~,=也可阻止nginx继续匹配正则,区别在于^~依然遵循最大前缀匹配规则,而=是严格匹配


普通优先 匹配到 则不匹配正则

正则如果匹配到就结束 不再继续匹配

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容