Nginx 是一个非常强大的 HTTP 和反向代理服务器,它可以通过配置文件来设置各种路由规则。以下是一些基本的 Nginx 反向代理路由配置示例:
基本的反向代理配置
nginx
http {
server {
listen 80; # 监听80端口
location / {
proxy_pass http://backend; # 将请求转发到名为 backend 的服务器组
proxy_set_header Host $host; # 设置请求头,将原始请求的 Host 头部传递给后端服务器
proxy_set_header X-Real-IP $remote_addr; # 设置请求头,将客户端的真实IP传递给后端服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置请求头,记录代理链路的IP地址
}
}
}
基于路径的路由规则
nginx
http {
server {
listen 80;
location /app1/ {
proxy_pass http://backend1;
}
location /app2/ {
proxy_pass http://backend2;
}
}
}
在这个配置中,/app1/
路径下的请求会被转发到 backend1
,而 /app2/
路径下的请求会被转发到 backend2
。
带有正则表达式的路由规则
nginx
http {
server {
listen 80;
location ~* ^/app/(\w+)/ {
proxy_pass http://backend$1;
}
}
}
在这个配置中,任何匹配正则表达式 ^/app/(\w+)/
的请求都会被转发到对应的 backend
服务器组,其中 $1
是正则表达式中的第一个捕获组,它会匹配 (\w+)
中的内容。
带有重写规则的路由
nginx
http {
server {
listen 80;
location /some/path/ {
rewrite ^/some/path/(.*) /new/path/$1 break; # 重写请求路径
proxy_pass http://backend;
}
}
}
这里,rewrite
指令用于修改请求的 URI,然后转发到 backend
。
负载均衡配置
nginx
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend; # 使用 upstream 定义的负载均衡组
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
在上述配置中,upstream
指令定义了一个名为 backend
的服务器组,Nginx 将根据配置的策略(默认是轮询)将请求分发到不同的后端服务器。
这些示例展示了 Nginx 反向代理配置的基础。根据具体需求,还可以配置更多的指令,如缓存、HTTPS、访问控制等。记得在修改配置文件后,使用 nginx -t
来测试配置文件的正确性,并使用 nginx -s reload
来重新加载配置。