- Nginx反向代理模块的指令是由
ngx_http_proxy_module
模块进行解析,该模块在安装Nginx的时候已经自己加装到Nginx中。
proxy_pass指令#
- 该指令用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。
语法 |
proxy_pass URL; |
默认值 |
— |
位置 |
location |
- URL:为要设置的被代理服务器地址,包含传输协议(
http
,https://
)、主机名称或IP地址加端口号、URI等要素。
server {
listen 80;
server_name localhost;
location / {
# 客户端访问 http://localhost/index.html 效果一样没区别
#proxy_pass http://192.168.200.146;
#proxy_pass http://192.168.200.146/;
}
}
server{
listen 80;
server_name localhost;
location /server{
# 客户端访问 http://localhost/server/index.html 地址不变
#proxy_pass http://192.168.200.146;
# 客户端访问 http://localhost/server/index.html
# 地址变为 http://localhost/index.html
#proxy_pass http://192.168.200.146/;
}
}
- 该指令可以更改Nginx服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给代理的服务器。
语法 |
proxy_set_header field value; |
默认值 |
proxy_set_header Host $proxy_host; | proxy_set_header Connection close; |
位置 |
http、server、location |
server {
listen 8080;
server_name localhost;
location /server {
proxy_pass http://192.168.200.146:8080/;
proxy_set_header username TOM;
}
}
proxy_redirect指令#
- 该指令是用来重置头信息中的"Location"和"Refresh"的值。
语法 |
proxy_redirect redirect replacement; | proxy_redirect default; | proxy_redirect off; |
默认值 |
proxy_redirect default; |
位置 |
http、server、location |
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://192.168.1.146:8081/;
# http://192.168.1.146 代码的地址
# http://192.168.1.133 来源的地址
proxy_redirect http://192.168.1.146 http://192.168.1.133;
}
}
- proxy_redirect redirect replacement:
- redirect:目标,Location的值
- replacement:要替换的值
- proxy_redirect default:
- 将location块的uri变量作为replacement
- proxy_redirect off:关闭proxy_redirect的功能。
- nginx 代理三台内容不一的服务器。
server {
listen 8082;
server_name localhost;
location /server1 {
proxy_pass http://192.168.1.146:9001/;
}
location /server2 {
proxy_pass http://192.168.1.146:9002/;
}
location /server3 {
proxy_pass http://192.168.1.146:9003/;
}
}