1.19 nginx的location配置
安装第三方模块echo-nginx-module
git clone https://github.com/openresty/echo-nginx-module.git
./configure --prefix=/usr/local/nginx --add-module=/path/to/echo-nginx-module
安装echo模块操作:
cd /usr/local/src/nginx-1.8.0/
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module
make && make install
/etc/init.d/nginx restart
# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module
配置写法:
server {
listen 80;
server_name 2.com;
root /data/t-nginx/2.com;
location /abc/
{
echo 123;
}
}
效果 访问/abc/要输出echo的信息
curl -x127.0.0.1:80 2.com/abc/1111
123
location语法
location [=|^~|~|~*] /uri/ { …. }
https://coding.net/u/aminglinux/p/nginx/git/blob/master/location/ruler.md
location优先级及案例
= 高于 ^~ 高于 ~* 等于 ~ 高于 /
http://coding.net/u/aminglinux/p/nginx/git/blob/master/location/priority.md
场景比较:/与~*
server {
listen 80;
server_name 2.com;
root /data/t-nginx/2.com;
location /abc/
{
echo "/";
}
location ~* abc
{
echo "~*";
}
}
效果:
当匹配到 location /abc/的时候,输出/
当匹配到 location ~* abc的时候,输出~*
测试访问:
curl -x127.0.0.1:80 2.com/abc/1111
~*
实验证明,同样的场景~*比/的优先级要高。
场景比较:~与~*
当这2个同时存在,会匹配最先出现的location语法。
场景比较:= 与 ^~
vim 2.com.conf
server {
listen 80;
server_name 2.com;
root /data/t-nginx/2.com;
location ^~ abc
{
echo "^~";
}
location = "/abc/1.php"
{
echo "=";
}
}
# curl -x127.0.0.1:80 2.com/abc/1.php
=
实验证明,同样的场景,=比^~的优先级要高。
规则示例
location = "/12.jpg" { ... }
如:
www.aminglinux.com/12.jpg 匹配
www.aminglinux.com/abc/12.jpg 不匹配
不匹配原因:因为“=”是精准匹配
location ^~ "/abc/" { ... }
如:
www.aminglinux.com/abc/123.html 匹配
www.aminglinux.com/a/abc/123.jpg 不匹配
不匹配原因:因为是以"/abc/"开头并匹配
location ~ "png" { ... }
如:
www.aminglinux.com/aaa/bbb/ccc/123.png 匹配
www.aminglinux.com/aaa/png/123.html 匹配
都匹配:~匹配"png"即可
location ~* "png" { ... }
如:
www.aminglinux.com/aaa/bbb/ccc/123.PNG 匹配
www.aminglinux.com/aaa/png/123.html 匹配
都匹配:因为不区分大小写匹配,所以有"png"都会匹配
location /admin/ { ... }
如:
www.aminglinux.com/admin/aaa/1.php 匹配
www.aminglinux.com/123/admin/1.php 不匹配
不匹配原因:因为是匹配uri后/admin/的开头,so第二个不配。
1.20 nginx正向代理
示意图
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/pic.md
Nginx正向代理
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/z_proxy.md
正向代理:
用户和代理服务器在同一个内网环境里,代理服务器帮用户去访问用户访问不到的web server
Nginx正向代理配置文件
server {
listen 80 default_server;
resolver 119.29.29.29;
location /
{
proxy_pass http://$host$request_uri;
}
}
解释:
正向代理配置文件一定要设default_server;
resolver 119.29.29.29; 解释dns,这个dns能解析所有公网web,除了被大陆防火墙屏蔽掉的(Facebook,Instagram...)
访问测试:
curl 外网
curl -x127.0.0.1:80 外网
Nginx反向代理
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/f_proxy.md
配置反向代理:
条件:
1 需要代理的server_name
2 server_name的IP或者ip:port
80代理90的域名配置如下:
server
{
listen 80;
server_name www.test.com;
location /
{
proxy_pass http://127.0.0.1:90/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
90被代理的虚拟主机配置:
server
{
listen 90 default_server;
server_name www.test.com;
root /data/t-nginx/test.com/;
index index.html ;
}
mkdir -p /data/t-nginx/test.com
echo "test.com_90" > /data/t-nginx/test.com/index.html
访问测试:
# curl -x127.0.0.1:90 www.test.com
test.com_90
# curl 127.0.0.1:90
test.com_90
访问ip:port和从90端口访问都是一样。
场景:访问test.com下,一个是default_server,另一个不是,区别输出结果
[root@AliKvn vhost]# cat test.com.conf
server
{
listen 90 ;
server_name www.test.com;
root /data/t-nginx/test.com/;
index index.html ;
}
[root@AliKvn vhost]#test.com-90-default.conf
server
{
listen 90 default_server;
# server_name www.test.com;
root /data/t-nginx/test.com/;
index index.html ;
location /
{
echo "90 default";
}
}
访问测试:
#curl 127.0.0.1:90
90 default
# curl -x127.0.0.1:90 www.test.com
test.com_90
# curl -x127.0.0.1:80 www.test.com
test.com_90
当利用80端口去访问 www.test.com的时候,跟利用90端口去访问www.test.com是一样的,证明反向代理已经配置成功了。
当proxy_pass 后面接的是域名的话,域名需要在本机hosts解析。
proxy_set_header 的Host $host 是对应的,区分为前端和后端地址。
nginx反向代理——proxy_pass
管什么情况下,最好都加上/
缓冲和缓存 https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/bu_ca.md
Nginx负载均衡
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/lb.md