简介
nginx是俄罗斯人编写的轻量级Web服务器,我们常用其作为高性能的HTTP和反向代理、负载均衡服务器,同时也是一个IMAP、POP3、SMTP代理服务器。
对于大多数使用者来说,Nginx常用作静态文件服务器和http请求转发器。他可以直接根据静态文件的请求返回静态文件资源。把动态文件的请求转发给后台的处理程序。
支持热部署,启动速度快,可以在不间断服务的情况下进行版本和配置的升级。我们的服务器是放在防火墙里面,不是直接暴露,通过ng做了个转换。
正向代理
就像是一个跳板。作为一个用户,我访问不了某个网站(公司防火墙里的后端服务器),但是我能访问一个代理服务器(Nginx)。这个代理服务器(nginx)可以访问那个我不能访问的网站。
我连接上那个代理服务器,告诉他我要访问的那个网站的内容,代理服务器去取回来,然后返回给我。(从网站的角度,只有代理服务器来访问一次的记录,并不知道是用户的请求【如果代理服务器不说的话】)
反向代理
用户访问http://www.example.com/readme,但是www.example.com上面并不存在readme的内容。于是他悄眯去另一台服务器取回来,作为自己的内容返回给用户,但是用户并不知情。那么,www.example.com这个域名对应的服务器就设置了反向代理功能。
- 正向代理,客户端是知道要转发的,需要配置(vpn设置:需要代理的地址、账户密码)。
- 对于客户端而言,反向代理就是原始服务器,客户端不需要做特别的设置。客户端向反向代理发出请求以后,反向代理自行判断后端服务器地址,转发请求,并将获得的内容返回给客户端,就如同这些内容是他自己的一样。
- 可以看出,我们现在配的nginx,都是用来做反向代理的。这样可以保护后端服务器,也能提高用户感知。
- 正向代理,代理的是客户端(服务器不知道客户端是谁)
- 反向代理,代理的是服务器,客户端不知道真正的服务器是谁。
正向代理和反向代理的简单配置逻辑
正向代理
服务器设置:访问服务器的ip不是代理服务器(118.126.106.11)则返回403。
location / {
# ^表示以118开头
if ( $remote_addr !~* "^118\.126\.106\.11" ){
return 408;
}
root /usr/local/nginx/html;
index index.html index.htm;
}
代理服务器配置
添加resolver和proxy_pass:
server{
listen 80; # 监听端口
server_name localhost;
resolver 8.8.8.8; # 谷歌免费DNS服务器
location / {
proxy_pass https://$http_host$request_url; # 主机+url
}
error_page 500 502 503 504 /50x.html;
localtion = 50x.html {
root /usr/local/nginx/html;
}
}
反向代理
例:服务器本身是不对外开放8080端口,但是想要访问,怎么办呢?
让他自己代理自己,哈哈哈哈
代理服务器设置
server {
listen 80;
server_name localhost;
localtion / {
root /usr/local/nginx/html;
index index.html index.htm;
}
# 设置代理
location /test.html {
proxy_pass http://localhost:8080;
}
error_page 500 502 503 504 /50x.html;
localtion = 50x.html {
root /usr/local/nginx/html;
}
}