反向代理是工作中最常用的服務器功能,經常被用來解決跨域問題,下面我們來簡單介紹一下如何實現反向代理。
首先進入 nginx 的主配置文件:
vim?/etc/nginx/nginx.conf
(推薦教程:nginx使用教程)
然后我們去 http 模塊的 server 塊中的 location /,增加一行將默認網址重定向到最大學習網站 Bilibili 的 proxy_pass 配置:
改完保存退出,nginx -s reload 重新加載,進入默認網址,那么現在就直接跳轉到 B 站了,實現了一個簡單的代理。
實際使用中,可以將請求轉發到本機另一個服務器上,也可以根據訪問的路徑跳轉到不同端口的服務中。
比如我們監聽 9001 端口,然后把訪問不同路徑的請求進行反向代理:
把訪問 http://127.0.0.1:9001/edu 的請求轉發到 http://127.0.0.1:8080
把訪問 http://127.0.0.1:9001/vod 的請求轉發到 http://127.0.0.1:8081
這種要怎么配置呢,首先同樣打開主配置文件,然后在 http 模塊下增加一個 server 塊:
server?{ ??listen?9001; ??server_name?*.sherlocked93.club; ??location?~?/edu/?{ ????proxy_pass?http://127.0.0.1:8080; ??} ?? ??location?~?/vod/?{ ????proxy_pass?http://127.0.0.1:8081; ??} }
反向代理還有一些其他的指令,可以了解一下:
1、proxy_set_header:在將客戶端請求發送給后端服務器之前,更改來自客戶端的請求頭信息。
2、proxy_connect_timeout:配置Nginx與后端代理服務器嘗試建立連接的超時時間。
3、proxy_read_timeout:配置Nginx向后端服務器組發出read請求后,等待相應的超時時間。
4、proxy_send_timeout:配置Nginx向后端服務器組發出write請求后,等待相應的超時時間。
5、proxy_redirect:用于修改后端服務器返回的響應頭中的Location和Refresh。