最近將公司的一些服務遷移到spring cloud了,感覺zuul智能路由的功能非常好用,比以前手動在nginx中添加localtion,upstream方便多了,但是服務域名的80端口被nginx占用,所以就采用了nginx+zuul的模式。
廢話不說直接上配置,在nginx.conf中添加:
注意“{}”中的信息請填寫自己的
server {
listen 80;
server_name {domain};
rewrite ^/a/b/(.*)$ /server1/a/b/$1;
rewrite ^/c/(.*)$ /server2/c/$1;
location /server1 {
proxy_pass http://xx.xx.xx.xxx:8888;
proxy_set_header host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header referer "-";
proxy_redirect default;
}
location /server2 {
proxy_pass http://xx.xx.xx.xxx:8888;
proxy_set_header host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header referer "-";
proxy_redirect default;
}
}
1. server1,server2為服務名,/a/b為server1的context,/c是server2的context
2. http://xx.xx.xx.xxx:8888 是zuul的服務地址
3. rewrite ^/a/b/(.*)$ /a/b/brand/$1; $1表示的是rewrite正則中()中的內容
因為zuul的默認是按 server name 將請求路由的,所以在nginx使用rewrite的方法將請轉發到zuul。