Nginx 服务代理与转发

Nginx安装

在 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;
    }
}

示例:

  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. 如果需要代理不同的端口,可以在目标服务器的地址后面添加 : 和端口号。
location /api {
    proxy_pass http://example.com:8080/api;
}
  1. 如果需要代理不同的路径,可以在目标服务器的地址后面添加 /api。
location /api {
    proxy_pass http://example.com/api;
}
  1. 如果需要代理不同的用户名和密码,可以在目标服务器的地址后面添加 username:password@。
location /api {
    proxy_pass http://username:password@example.com/api;
}
  1. 如果需要代理不同的请求头,可以在 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。

  1. 如果需要代理不同的 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。

  1. 如果需要代理 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;
    }
}

配置说明:

  1. listen 80;:指定nginx服务器监听的端口为80。
  2. server_name localhost;:指定nginx服务器所绑定的域名或IP地址
  3. location / { }:指定对根目录下的请求进行处理。
  4. proxy_pass http://target-server;:指定请求转发的目标服务器地址。
  5. proxy_set_header Host $host;:设置请求头中的Host字段。
  6. proxy_set_header X-Real-IP $remote_addr;:设置请求头中的X-Real-IP字段,用于获取客户端的真实IP地址。
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:设置请求头中的X-Forwarded-For字段,用于记录客户端的代理链。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容