nginx的反向代理和负载均衡实践

有些人让你对明天充满期许,却再也没有出现在你的明天里。
### apache的配置 使用 Apache 模拟出两个站点,分别使用8081和8082端口 访问: http://121.42.176.99:8081/ http://121.42.176.99:8082/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Listen 8081
<VirtualHost *:8081>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/httpd/htdocs/test"
DirectoryIndex index.html index.php
ServerName 127.0.0.1
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
<Directory "/usr/local/httpd/htdocs/test">
Options FollowSymLinks
AllowOverride all
allow from all
Require all granted
</Directory>
Listen 8082
<VirtualHost *:8082>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/httpd/htdocs/test1"
DirectoryIndex index.html index.php
ServerName 127.0.0.1
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
<Directory "/usr/local/httpd/htdocs/test">
Options FollowSymLinks
AllowOverride all
allow from all
Require all granted
</Directory>
网站的内容index.php 打印出服务器变量: var_export($_SERVER);

反向代理nginx

nginx 默认使用80端口,http://121.42.176.99/
配置:

1
2
3
location / {
proxy_passs http://localhost:8081
}

之后重启nginx
这时候访问http://121.42.176.99/,就会访问的是apache的8081端口

问题

我们发现获取到的服务器信息不正确:
1、HTTP_HOST:localhost:8081
2、REMOTE_ADDR:127.0.0.1 (客户端的IP)
这会对我们的开发造成“迷茫”,因此要在nginx配置里加入
1、proxy_set_header Host $host;
2、proxy_set_header X-Real-IP $remote_addr;

其他的一些设置请google;