Nginx中proxy_pass使用小結(jié)
proxy_pass 是 Nginx 中一個非常重要的指令,用于將請求代理到后端服務(wù)器。本文將詳細介紹 proxy_pass 的基本用法、配置示例以及一些高級用法。
1. 基本概念
1.1 proxy_pass 概述
proxy_pass 指令用于將請求轉(zhuǎn)發(fā)到后端服務(wù)器。它可以用于 HTTP 和 Stream 模塊,分別處理 HTTP 請求和 TCP/UDP 流量。
1.2 語法
proxy_pass URL;
- URL:后端服務(wù)器的地址,可以是 HTTP/HTTPS 地址或 TCP/UDP 地址。
1.3 使用場景
- HTTP 代理:將 HTTP 請求轉(zhuǎn)發(fā)到后端服務(wù)器。
- Stream 代理:將 TCP/UDP 流量轉(zhuǎn)發(fā)到后端服務(wù)器。
2. 基本用法
2.1 HTTP 代理
2.1.1 基本示例
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
}
}
在這個示例中,所有訪問 example.com 的請求都會被轉(zhuǎn)發(fā)到 backend_server。
2.1.2 絕對根路徑 vs 相對路徑
絕對根路徑:在 proxy_pass 后面的 URL 以斜杠 / 結(jié)束,表示絕對根路徑。
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
例如,訪問 http://example.com/proxy/test.html 會被轉(zhuǎn)發(fā)到 http://127.0.0.1/test.html。
相對路徑:在 proxy_pass 后面的 URL 不以斜杠 / 結(jié)束,表示相對路徑。
location /proxy/ {
proxy_pass http://127.0.0.1;
}
例如,訪問 http://example.com/proxy/test.html 會被轉(zhuǎn)發(fā)到 http://127.0.0.1/proxy/test.html。
2.2 Stream 代理
stream {
upstream backend {
server 127.0.0.1:8080;
}
server {
listen 12345;
proxy_pass backend;
}
}
在這個示例中,所有連接到 12345 端口的 TCP 流量都會被轉(zhuǎn)發(fā)到 127.0.0.1:8080。
3. 高級用法
3.1 正則匹配
當 location 使用正則表達式時,proxy_pass 不能包含 URI 部分。
location ~ /testc {
proxy_pass http://127.0.0.1:8801;
}
如果包含 URI 部分,會導(dǎo)致配置文件解析錯誤:
location ~ /testd {
proxy_pass http://127.0.0.1:8801/; # 錯誤
}
3.2 變量使用
可以使用變量來動態(tài)生成轉(zhuǎn)發(fā)地址。
location /novel/ {
proxy_pass http://book-server/books$request_uri;
}
例如,訪問 http://example.com/novel/three-body.html?page=3 會被轉(zhuǎn)發(fā)到 http://book-server/books/novel/three-body.html?page=3。
3.3 重定向
Nginx 會在某些情況下自動進行 301 重定向,例如當請求的 URI 沒有以斜杠 / 結(jié)束,但 Nginx 認為這是一個目錄時。
location /films/nature/ {
proxy_pass http://film-server;
}
如果訪問 http://example.com/films/nature,Nginx 會返回 301 重定向到 http://example.com/films/nature/。
3.4 精確匹配
可以使用精確匹配來避免 301 重定向。
location /films/nature/ {
proxy_pass http://film-server;
}
location = /films/nature {
proxy_pass http://film-server;
}
3.5 if 語句
在 location 中使用 if 語句時,proxy_pass 不能包含 URI 部分。
location /google {
if ($geoip_country_code ~ (RU|CN)) {
proxy_pass http://www.google.hk;
}
}
3.6 limit_except
在 limit_except 中使用 proxy_pass 時,不能包含 URI 部分。
location /yongfu/ {
proxy_pass http://unix:/tmp/backend.socket:/uri/;
limit_except PUT DELETE {
proxy_pass http://127.0.0.1:9080;
}
}
4. 實際案例
4.1 轉(zhuǎn)發(fā)到多個后端服務(wù)器
upstream backend_servers {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
}
}
4.2 轉(zhuǎn)發(fā)到不同路徑
server {
listen 80;
server_name example.com;
location /api/ {
proxy_pass http://api_server/;
}
location /static/ {
proxy_pass http://static_server/;
}
}
4.3 轉(zhuǎn)發(fā)到 Unix Domain Socket
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://unix:/tmp/backend.socket:/uri/;
}
}到此這篇關(guān)于Nginx中proxy_pass使用小結(jié)的文章就介紹到這了,更多相關(guān)Nginx proxy_pass使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx中l(wèi)ocation proxy_pass加與不加/的區(qū)別說明
- Nginx?location和proxy_pass配置示例詳解
- Nginx中proxy_pass的斜杠的兩種方式
- Nginx的location路徑與proxy_pass匹配規(guī)則說明
- Nginx捕獲并自定義proxy_pass返回的錯誤問題
- nginx中如何配置proxy_pass
- Nginx rewrite和proxy_pass的區(qū)別及說明
- Nginx proxy_pass如何到https后端
- nginx代理參數(shù)proxy_pass的實現(xiàn)
- nginx反向代理proxy_pass遇到的死循環(huán)問題
- 解決nginx配置proxy_pass之后,響應(yīng)變慢的問題
- Nginx使用if指令實現(xiàn)多個proxy_pass方式
相關(guān)文章
Nginx配置網(wǎng)頁轉(zhuǎn)發(fā)的實現(xiàn)步驟
本文主要介紹了Nginx配置網(wǎng)頁轉(zhuǎn)發(fā)的實現(xiàn)步驟,實現(xiàn)將云服務(wù)器的80端口轉(zhuǎn)發(fā)到另一臺服務(wù)器部署的網(wǎng)頁,具有一定的參考價值,感興趣的可以了解一下2024-05-05
nginx proxy_redirect https配置后端http302跳轉(zhuǎn)處理方式
這篇文章主要介紹了nginx proxy_redirect https配置后端http302跳轉(zhuǎn)處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Nginx轉(zhuǎn)發(fā)需求querystring轉(zhuǎn)寫示例解析
這篇文章主要為大家介紹了Nginx轉(zhuǎn)發(fā)需求querystring轉(zhuǎn)寫示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
nginx正向代理https網(wǎng)站的實現(xiàn)
Nginx正向代理,通過服務(wù)器代理客戶端去重定向請求訪問到目標服務(wù)器的一種代理服務(wù),本文主要介紹了nginx正向代理https網(wǎng)站的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-05-05
Nginx防盜鏈根據(jù)UA屏蔽惡意User Agent請求(防蜘蛛)
相對于 Apache,Nginx 占用的系統(tǒng)資源更少,更適合 VPS 使用。惡意盜鏈的 User Agent 無處不在,博客更換到 WordPress 沒幾天,就被 SPAM(垃圾留言)盯上,又被暴力破解后臺用戶名密碼。今天來介紹 Nginx 屏蔽惡意 User Agent請求的方法2016-07-07
linux安裝nginx和前端部署vue項目全過程(實測react項目也可)
這篇文章主要介紹了如何將前端項目打包并部署到服務(wù)器上,包括使用nginx進行配置和啟動等步驟,文中通過代碼以及圖文介紹的非常詳細,需要的朋友可以參考下2024-11-11
Nginx配置之虛擬主機server_name優(yōu)先級方式
本文主要介紹了Nginx配置文件中不同匹配規(guī)則的優(yōu)先,包括精確匹配、以星號開頭的最長通配符、以星號結(jié)尾的最長通配符以及第一個正則表達式匹配,總結(jié)了Nginx處理匹配規(guī)則的優(yōu)先機制,以及注意事項2026-04-04

