在 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;
}
}
示例:
- 將 /api 路徑的請求代理到 http://example.com/api。
location /api {
proxy_pass http://example.com/api;
}
- 如果需要代理 HTTPS 請求,將 http 替換為 https。
location /api {
proxy_pass https://example.com/api;
}
- 如果需要代理 WebSocket 請求,將 http 替換為 ws 或 wss。
location /api {
proxy_pass ws://example.com/api;
}
- 如果需要代理不同的端口,可以在目標(biāo)服務(wù)器的地址后面添加 : 和端口號(hào)。
location /api {
proxy_pass http://example.com:8080/api;
}
- 如果需要代理不同的路徑,可以在目標(biāo)服務(wù)器的地址后面添加 /api。
location /api {
proxy_pass http://example.com/api;
}
- 如果需要代理不同的用戶名和密碼,可以在目標(biāo)服務(wù)器的地址后面添加 username:password@。
location /api {
proxy_pass http://username:password@example.com/api;
}
- 如果需要代理不同的請求頭,可以在 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。
- 如果需要代理不同的 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。
- 如果需要代理 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;
}
}
配置說明:
- listen 80;:指定nginx服務(wù)器監(jiān)聽的端口為80。
- server_name localhost;:指定nginx服務(wù)器所綁定的域名或IP地址
- location / { }:指定對根目錄下的請求進(jìn)行處理。
- proxy_pass http://target-server;:指定請求轉(zhuǎn)發(fā)的目標(biāo)服務(wù)器地址。
- proxy_set_header Host $host;:設(shè)置請求頭中的Host字段。
- proxy_set_header X-Real-IP $remote_addr;:設(shè)置請求頭中的X-Real-IP字段,用于獲取客戶端的真實(shí)IP地址。
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:設(shè)置請求頭中的X-Forwarded-For字段,用于記錄客戶端的代理鏈。