美文网首页
Nginx 服务代理与转发

Nginx 服务代理与转发

作者: Rising_life | 来源:发表于2023-11-21 15:18 被阅读0次

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字段,用于记录客户端的代理链。

相关文章

  • 代理、转发

    代理、转发 正向代理,代理客户端,例如 vpn。 反向代理,代理服务端,例如 Nginx 分发流量。 Nginx可...

  • Nginx安装使用教程

    一、Nginx代理转发到应用服务1、 Nginx入门学习笔记Windows系统:1、到nginx官网下载,解压即可...

  • web后端开发知识体系

    核心服务:1.协议:http/rpc/MQ2.转发层:方向代理与负载均衡 nginx3.服务框架: gin grp...

  • Nginx + Apache 反向代理

    Nginx + Apache 反向代理 反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这...

  • 常用脚本

    *.nginx转发websocket请求配置方式 代理服务器就可以转发224服务器的推送数据了。 *.centos...

  • Nginx的使用

    Nginx的使用 反向代理 代理服务器(Nginx)来接受internet上的连接请求,然后将请求转发给内部网络上...

  • Nginx速识

    Nginx是什么 Nginx是一款轻量级Web服务器,也是一款反向代理服务器。日常中用到的域名转发用的就是反向代理...

  • 2018-04-06

    说明 主nginx服务 每个网站一个单独的lnmp容器,通过本容器中的nginx进行代理转发 nginx配置文件指...

  • Servlet、Servlet容器、Tomcat、Nginx

    Tomcat和Nginx的区别 nginx常用做静态内容服务和代理服务器,直面外来请求并转发给后面的应用服务(to...

  • 今天使用nginx配置tcp转发记录一下

    Ngnix Tcp 代理转发SS服务 - CSDN博客 nginx编译安装编译依赖库: Debian 和 Ubun...

网友评论

      本文标题:Nginx 服务代理与转发

      本文链接:https://www.haomeiwen.com/subject/dawbwdtx.html