介绍
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
tar xf nginx.tar.gz
cd nginx
## 配置
./configure --prefix=/usr/local/nginx #安装路径 你会看到文件夹多了Makefile这个文件
make && make install
#完成后,进入
cd sbin /
./nginx 测试访问
正向代理 : 翻墙软件
服务提供方未知 , 客户端已知
反向代理 : nginx
客服端不知道提供服务的到底是谁
切记
nginx的location 和proxy_pass 有无/(根)结尾的区别
在location中匹配的url最后有无/结尾,指的是模糊匹配与精确匹配的问题
在proxy_pass中代理的url最后有无/结尾(不能作为判断依据),指的是在proxy_pass 指定的url后要不要替换掉location里面匹配到的字符串
单纯从proxy_pass的问题上来说, 不能以有没有/结尾来判断, 而是以有没有uri来判断.
只要在 域名:端口 后面加上了任何以/开头的字符串, 就被视为有uri, 规则就会发生改变. 有uri就会把请求的uri拼到proxy_pass的url后面, 然后整个替换掉location里面匹配的字符串.
举例如下
- 没有"/"结尾时,
location /abc/def
可以匹配/abc/defghi的请求,也可以匹配/abc/def/ghi ......
- 有"/"结尾时,
location /abc/def/
不能匹配/abc/defghi的请求,只能精确匹配/abc/def/ghi
这样的请求
#情况1
location /proxy/ {
proxy_pass http://myblog.com:8000/;
}
# proxy_pass的最终地址就是: http://myblog.com:8000/login.html
# 因为proxy_pass 在端口号后面有以/开头的uri,代表绝对路径,所以会忽略匹配到的/proxy/, 直接将/proxy/ 整个从url里面删除.
#情况2
location /proxy/ {
proxy_pass http://myblog.com:8000;
}
#proxy_pass 代理到 http://myblog.com:8000/proxy/login.html
#情况3
location /proxy/ {
proxy_pass http://myblog.com:8000/disquz/;
}
#proxy_pass 代理到http://myblog.com:8000/disquz/login.html
#情况4
location /proxy/ {
proxy_pass http://myblog.com:8000/disquz;
}
# proxy_pass 代理到http://myblog.com:8000/disquzlogin.html
# 因为在端口号后面有/disquz 以/开头的uri, 所以会将/proxy/完全替换, 故/proxy/login.html 只剩下login.html 拼在url后面就会成为http://myblog.com:8000/disquzlogin.html
#情况5
location /proxy {
proxy_pass http://myblog.com:8000/disquz/;
}
# proxy_pass 代理到http://myblog.com:8000/disquz//login.html
# 因为匹配到了这个规则 所以把uri里面的/proxy去掉 剩下/login.html, 拼在url后面就是http://myblog.com:8000/disquz//login.html
限制host
server {
listen 80;
server_name app.com;
if ($host !~* ^app.com$){
return 403;
}
}