Nginx 服務(wù)代理與轉(zhuǎn)發(fā)

Nginx安裝

在 Nginx 中配置跨域代理

在 Nginx 的配置文件中添加一個(gè) location 節(jié)點(diǎn)來配置代理服務(wù)器。
location 節(jié)點(diǎn)中的參數(shù)指定了代理的 URL 路徑和代理的目標(biāo)服務(wù)器。

# 跨域代理配置
server {
    listen       80;  # 監(jiān)聽的端口
    server_name  localhost;  # 代理的目標(biāo)域名

    # 轉(zhuǎn)發(fā)請求
    location / {
        # 設(shè)置代理
        proxy_pass  http://example.com;
        # 設(shè)置代理請求頭
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        # 允許跨域訪問
        add_header Access-Control-Allow-Origin *;
        # 允許以下請求方法
        add_header Access-Control-Allow-Methods GET, POST, PUT, DELETE, PATCH, OPTIONS;
        # 允許以下請求頭
        add_header Access-Control-Allow-Headers Content-Type, Authorization;
    }
}

示例:

  1. 將 /api 路徑的請求代理到 http://example.com/api
location /api {
    proxy_pass http://example.com/api;
}
  1. 如果需要代理 HTTPS 請求,將 http 替換為 https。
location /api {
    proxy_pass https://example.com/api;
}
  1. 如果需要代理 WebSocket 請求,將 http 替換為 ws 或 wss。
location /api {
    proxy_pass ws://example.com/api;
}
  1. 如果需要代理不同的端口,可以在目標(biāo)服務(wù)器的地址后面添加 : 和端口號(hào)。
location /api {
    proxy_pass http://example.com:8080/api;
}
  1. 如果需要代理不同的路徑,可以在目標(biāo)服務(wù)器的地址后面添加 /api。
location /api {
    proxy_pass http://example.com/api;
}
  1. 如果需要代理不同的用戶名和密碼,可以在目標(biāo)服務(wù)器的地址后面添加 username:password@。
location /api {
    proxy_pass http://username:password@example.com/api;
}
  1. 如果需要代理不同的請求頭,可以在 location 節(jié)點(diǎn)中添加 proxy_set_header 指令。
location /api {
    proxy_pass http://example.com/api;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

上述代碼表示將 /api 路徑的請求代理到 http://example.com/api,并設(shè)置代理請求頭的 Host、X-Real-IP 和 X-Forwarded-For。

  1. 如果需要代理不同的 HTTP 方法,可以在 location 節(jié)點(diǎn)中添加 proxy_set_header 指令。
location /api {
    proxy_pass http://example.com/api;
    proxy_set_header X-Method-Override $request_method;
}

上述代碼表示將 /api 路徑的請求代理到 http://example.com/api,并設(shè)置代理請求頭的 X-Method-Override。

  1. 如果需要代理 HTTPS 請求,并且需要保持跨域請求的同源策略,可以在 location 節(jié)點(diǎn)中添加 add_header 指令。
location /api {
    proxy_pass https://example.com/api;
    add_header Access-Control-Allow-Origin *;
}

上述代碼表示將 /api 路徑的請求代理到 https://example.com/api,并添加 Access-Control-Allow-Origin 頭部字段,允許所有同源請求。

以上就是在 Nginx 中配置跨域代理的示例。根據(jù)實(shí)際需求,可以自行調(diào)整參數(shù)和指令。

Nginx服務(wù)轉(zhuǎn)發(fā)

Nginx服務(wù)轉(zhuǎn)發(fā)是指將客戶端的請求轉(zhuǎn)發(fā)到后端的服務(wù)器上進(jìn)行處理,并將服務(wù)器的響應(yīng)返回給客戶端。
配置Nginx服務(wù)器的虛擬主機(jī)
在一個(gè)虛擬主機(jī)中,可以指定一個(gè)域名或IP地址,并配置請求轉(zhuǎn)發(fā)規(guī)則。以下是一個(gè)簡單的虛擬主機(jī)配置示例:

server {
    listen       80;
    server_name  localhost;

    # 轉(zhuǎn)發(fā)請求
    location / {
        proxy_pass  http://target-server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

配置說明:

  1. listen 80;:指定nginx服務(wù)器監(jiān)聽的端口為80。
  2. server_name localhost;:指定nginx服務(wù)器所綁定的域名或IP地址
  3. location / { }:指定對根目錄下的請求進(jìn)行處理。
  4. proxy_pass http://target-server;:指定請求轉(zhuǎn)發(fā)的目標(biāo)服務(wù)器地址。
  5. proxy_set_header Host $host;:設(shè)置請求頭中的Host字段。
  6. proxy_set_header X-Real-IP $remote_addr;:設(shè)置請求頭中的X-Real-IP字段,用于獲取客戶端的真實(shí)IP地址。
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:設(shè)置請求頭中的X-Forwarded-For字段,用于記錄客戶端的代理鏈。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容