nginx反向代理的指令不须要新增额外的模块,默认自带proxy_pass指令,只须要修改配置文件就能够实现反向代理。php
配置前的准备工做,后端跑项目的ip和端口,也就是说能够经过http://ip:port能访问到你的网站。html
upstream test { server ip:port; #部署项目的服&务器ip和端口 } server { listen 80; server_name www.quancha.cn; access_log logs/quancha.access.log main; error_log logs/quancha.error.log; root html; index index.html index.htm index.php; location / { proxy_pass http://test; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
upstream test1 { server ip1:port;#部署项目的服&务器ip和端口 } upstream test2 { server ip2:port;#部署项目的服&务器ip和端口 } server { listen 80; #access_log logs/host.access.log main; location /test1 { proxy_pass http://test1; index index.html index.htm; } } server { listen 80; #access_log logs/host.access.log main; location /test2 { proxy_pass http://test2; index index.html index.htm; } }
在nginx中配置proxy_pass代理转发时,若是在proxy_pass后面的url加/,表示绝对根路径;若是没有/,表示相对路径,把匹配的路径部分也给代理走。nginx
假设下面四种状况分别用 http://192.168.1.1/proxy/test.html 进行访问。后端
location /proxy/ { proxy_pass http://192.168.1.1/; }
访问URL:http://192.168.1.1/test.html网站
location /proxy/ { proxy_pass http://192.168.1.1; }
访问URL:http://192.168.1.1/proxy/test.htmlurl
location /proxy/ { proxy_pass http://192.168.1.1/test/; }
代理到URL:http://192.168.1.1/teset/test.htmlspa
location /proxy/ { proxy_pass http://192.168.1.1/test; }
代理到URL:http://192.168.1.1/testtest.html代理