在 Nginx 中配置跨域代理
在 Nginx 的配置文件中添加一个 location 节点来配置代理服务器。
location 节点中的参数指定了代理的 URL 路径和代理的目标服务器。
# 跨域代理配置
server {
listen 80; # 监听的端口
server_name localhost; # 代理的目标域名
# 转发请求
location / {
# 设置代理
proxy_pass http://example.com;
# 设置代理请求头
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;
}
- 如果需要代理不同的端口,可以在目标服务器的地址后面添加 : 和端口号。
location /api {
proxy_pass http://example.com:8080/api;
}
- 如果需要代理不同的路径,可以在目标服务器的地址后面添加 /api。
location /api {
proxy_pass http://example.com/api;
}
- 如果需要代理不同的用户名和密码,可以在目标服务器的地址后面添加 username:password@。
location /api {
proxy_pass http://username:password@example.com/api;
}
- 如果需要代理不同的请求头,可以在 location 节点中添加 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,并设置代理请求头的 Host、X-Real-IP 和 X-Forwarded-For。
- 如果需要代理不同的 HTTP 方法,可以在 location 节点中添加 proxy_set_header 指令。
location /api {
proxy_pass http://example.com/api;
proxy_set_header X-Method-Override $request_method;
}
上述代码表示将 /api 路径的请求代理到 http://example.com/api,并设置代理请求头的 X-Method-Override。
- 如果需要代理 HTTPS 请求,并且需要保持跨域请求的同源策略,可以在 location 节点中添加 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 中配置跨域代理的示例。根据实际需求,可以自行调整参数和指令。
Nginx服务转发
Nginx服务转发是指将客户端的请求转发到后端的服务器上进行处理,并将服务器的响应返回给客户端。
配置Nginx服务器的虚拟主机
在一个虚拟主机中,可以指定一个域名或IP地址,并配置请求转发规则。以下是一个简单的虚拟主机配置示例:
server {
listen 80;
server_name localhost;
# 转发请求
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服务器监听的端口为80。
- server_name localhost;:指定nginx服务器所绑定的域名或IP地址
- location / { }:指定对根目录下的请求进行处理。
- proxy_pass http://target-server;:指定请求转发的目标服务器地址。
- proxy_set_header Host $host;:设置请求头中的Host字段。
- proxy_set_header X-Real-IP $remote_addr;:设置请求头中的X-Real-IP字段,用于获取客户端的真实IP地址。
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:设置请求头中的X-Forwarded-For字段,用于记录客户端的代理链。