proxy 用来做反向代理
upstream 用来做负载均衡
反向代理:就是nginx自己不去处理,将请求进行转发到别的服务器(apache)进行处理
例:
nginx处理html 通过代理 用apache处理php (httpd.conf)(./bin/apachectl start) ,反向代理
例
location ~ .php$ {
proxy_pass http://192.168.1.123:8080; #通过proxy_pass传递
}
如果要实现负载均衡,首先需要多台服务器,要集成在一个上游
server {
listen 8081;
server_name localhost;
root html;
access_log logs/8081-access.log main;
}
server {
listen 8082;
server_name localhost;
root html;
access_log logs/8082-access.log main;
}
upstream imgserver {
server 192.168.1.123:8081 weight=1 max_fails=2 fail_timeout=3;
server 192.168.1.123:8082 weight=1 max_fails=2 fail_timeout=3;
}
如果有错误 set nu定位哪行
location ~ * .(jpg|jpeg|gif|png){
proxy_pass http://imgserver;
}
反向代理导致了后端服务器IP,为前端服务器ip,不是客户真正的ip怎么办?
location ~.php$ {
proxy_set_header X-Forwarder-For $remote_addr;
proxy_pass http://192.168.1.123:8080;
}