码迷,mamicode.com
首页 > 其他好文 > 详细

nginx解析

时间:2019-08-06 18:21:31      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:express   cores   clu   腾讯   index   org   regular   区分大小写   aaa   

 nginx配置文档

 

 腾讯云nginx 教程

http://shouce.jb51.net/nginx/left.html

http://www.nginx.cn/nginx-how-to

 

 

Nginx文章

useradd -s /sbin/nologin nginx

yum install pcre-devel openssl-devel  gcc

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx  --with-http_ssl_module --with-stream --with-http_stub_status_module  .......

 

nginx -h 帮助
nginx -s stop
nginx -s reload
nginx -V

Linux 之centos7 制作服务自启动systemd





location 中根目录的alias和root的区别

location /abc/ {
    alias /home/html/abc/;
}

在这段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。这段配置亦可改成

location /abc/ {
    root /home/html/;
}

这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。

解析:如果是alias的话,匹配的 /abc/ 就等于/home/html/abc/,  如果是root的话,匹配中的 /abc/ 中的 /  等于/home/html/  ,而 /abc/  等于/home/html/abc/

但是,如果我把alias的配置改成:

location /abc/ {
    alias /home/html/def/;
}

  那么nginx将会从/home/html/def/取数据,这段配置还不能直接使用root配置,如果非要配置,只有在/home/html/下建立一个 def->abc的软link(快捷方式)了。一般情况下,在location /中配置root,在location /other中配置alias是一个好习惯。至于alias和root的区别,我估计还没有说完全,如果在配置时发现奇异问题,不妨把这两者换换试试。

但nginx在处理php脚本时,需要传递给fastcgi才能处理,所以比apache的别名设置多一个,下面我们以phpmyadmin别名设置为例:

location ~ ^/phpmyadmin.+.php$ {
root /home/www/default;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /phpmyadmin {
root /home/www/default;
index index.php;
}

 proxy_pass 使用详解

永福的博客

 补充解释1:proxy_pass  后的url如果加了   /   就会改变 请求,减去location 后的匹配  url段,不加  /  就不会改变请求,前端的url是什么,代理后的请求就是什么,如:

补充2:当location使用  正则匹配时,proxy_pass  后的url是不能加  /  的("proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block ),

1:

location  / {
 proxy_pass http://192.168.0.132/aa/;
index index.html;
}

访问  http://test.com/aa,  后端的请求是/aa/aa/,回到根目录下找aa文佳夹下的aa下的index.html

2:

location  /aa {
 proxy_pass http://192.168.0.132;
index index.html;
}

访问192.168.0.139/aa/   就是访问  html/aa/index.html ,访问192.168.0.139/aaaa/    就是访问 html/aaaa/index.html

location  /aa {
 proxy_pass http://192.168.0.132/;
index index.html;
}
访问192.168.0.139/aa/   就是访问  html/index.html   访问192.168.0.139/aaaa/    就是访问html/aa/index.html

(curl 访问是 url/aa    和 url/aa/     是不一样的  文件和目录,当输入  url/aa  找不到时 ,输入url//aa/   可以正常返回页面。而使用浏览器访问时 ,浏览器会同时访问 两个, url/aa  找不到时,就自动请求url//aa/ ,地址栏也跟着加上  /  )

技术图片

 

 

 location匹配规则

 

符号含义
= 开头表示精确匹配
^~ 开头表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。nginx 不对 url 做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)
~ 开头表示区分大小写的正则匹配
~* 开头表示不区分大小写的正则匹配
/ 通用匹配,任何请求都会匹配到
!~ 取反
!~* 取反

 Location配置总结

 nginx配置location总结(厉害)匹配顺序

 

location  / {
return 500;                           #A
}

location ~*  /Bb {
 proxy_pass http://www.baidu.com;    #B
}
location
~ /BB { proxy_pass http://192.168.0.132; #C } location ^~ /bb { proxy_pass http://192.168.0.132; #D } location = /bB/ { proxy_pass http://www.163.com; #E }


test.com/BB 进入A ,test.com/bb 进入D ,test.com/bB 进入E,test.com/bbbbb ,进入D ,test.com/bf 进入A

 

location   /zuul {
                proxy_pass http://192.168.0.147/;
        }

location  ^~  /zuul {
                proxy_pass http://192.168.0.147/;
        }
这两个是等效的,都是匹配 /zuul 开头, /zuul/aaa 和 /zuulaaa 都会匹配到,将aaa传给后端,
当location 匹配 = /zuul 则只能只 /zuul 才能匹配,/zuul/aaa 和 /zuulaaa 都不行
location  ~ 的正则匹配是不支持 proxy_pass 的
nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /usr/local/nginx/conf/nginx.conf:60

 

 

 

 

 

 

Nginx内置变量以及日志格式变量参数详解

nginx防盗链 :1   2   3   4    5    6    7(官网)  

nginx代理后登陆网页失败(请求头被保留)

场景:进入登陆界面,输入错误的账号密码,提示密码错误,说明代理配置没有问题。但是输入正确的账号密码,返回400。

本场景(vue和微服务)的认证原理:输入正确的账号密码,路由到认证服务后,返回给你auth-token文件,以后的请求在请求头上都会有token文件,服务器再验证token文件,如果正确就登陆成功。

      而Nginx有underscores_in_headers 参数,nginx默认request的header的那么中包含’_’时,会自动忽略掉。

       解决方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置:underscores_in_headers on; (默认 underscores_in_headers 为off)

技术图片

 Nginx的超时timeout配置详解

 

 

nginx解析

标签:express   cores   clu   腾讯   index   org   regular   区分大小写   aaa   

原文地址:https://www.cnblogs.com/fanever/p/11162945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!