正向代理
由本地机器访问服务器时,利用代理ip地址披一个马甲,使用代理的ip进行一个访问
反向代理
还是准备三台linux机器,分别安装好nginx服务,nginx咫尺web服务器以及反向代理
| lb01 | nginx负载均衡 |
|---|---|
| worker-66 | 提供静态页面的nginx |
| worker-67 | 提供静态页面的nginx |
配置nginx的access.log查看代理ip走向
- 修改第一个nginx web服务器的配置,定义好日志记录功能,以及日志格式
```nginx
日志的格式
log_format main ‘$remote_addr - $remote_user [$time_local] “$request” ‘'$status $body_bytes_sent "$http_referer" '' "$http_user_agent" "$http_x_forwarded_for" ';
第一个域名虚拟主机
server { listen 80; server_name mp3.chaoge.com; charset utf-8; access_log logs/access.log.mp3 main; location / { root html/mp3; index index.html index.htm; } }
2. 修改第二个web服务器的配置```nginxserver {listen 80;server_name mp3.chaoge.com;charset utf-8;#配置日志,加不加都可,看自己需求access_log logs/access.log.mp3 main;location / {root html/mp3;index index.html index.htm;}}
- 实时检测日志的内容,查看用户请求信息
tail -f 检测日志文件,日志名与自己配置时的内容进行对应
tail -f /opt/nginx/logs/access.log.mp3
分别给web服务器发出请求即可
通过负载均衡发出请求,查看反向代理过程
http {include mime.types;default_type application/octet-stream;#定义节点服务器地址池upstream my_node {server 172.0.0.66;server 172.0.0.67;}#作用是反向代理的虚拟主机配置server {listen 80;server_name lb.chaoge.com;access_log logs/access.log.lb01 main;location / {proxy_pass http://my_node;proxy_set_header Host $host;}}}
检验效果:通过本地机器访问lb01,查看请求的反向代理与分发,并查看日志情况,能够一次得到两台web服务器的站点内容,但是显示抓取的不是真实的ip地址
x-Forwarded-For参数
在反向代理请求后端节点服务器中,在请求头中添加获取客户端ip的字段信息,然后在后端节点上可以再次通过程序接受x-forwarded-for参数传来用户真实的ip信息
修改 lb01 反向代理机器的配置,添加如下参数,在请求转发的时候,添加头部信息,添加用户客户端ip信息
server {listen 80;server_name lb.chaoge.com;access_log logs/access.log.lb01;location / {proxy_pass http://my_node;proxy_set_header Host $host;#添加如下这行即可proxy_set_header X-Forwarded-For $remote_addr;}}
如果想在web服务器中,记录该客户端真实的ip信息,还得修改日志格式如下 ```nginx
日志的格式
log_format main ‘$remote_addr - $remote_user [$time_local] “$request” ‘
'$status $body_bytes_sent "$http_referer" '' "$http_user_agent" "$http_x_forwarded_for" ';
主要确保有 “$http_x_forwarded_for” 即可
```
