Nginx 请求拷贝、请求镜像

本文介绍了如何通过Nginx的`mirror`指令配置,实现在公司门禁系统打卡数据的http主动推送中,将数据复制到两个内部系统的需求。通过设置源站和镜像站的location,实现了流量的镜像转发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        场景需求:公司门禁系统的打卡数据只支持http主动推送往一个地址,但是内部有两个系统需要获取这些数据,这时可以使用nginx的镜像请求实现请求复制。"mirror" 指令会创建一个镜像请求,并将其发送到指定的位置,但不会等待镜像请求的响应。

        配置如下:

server {
    listen    80;
    server_name fmi110.com;

    # 源站配置
    location / {
        access_log /usr/local/nginx/logs/access.log accesslog;
        mirror /mirror;
        mirror_request_body on;
        proxy_pass http://fmi110.upstream1;
    }

    # 镜像站点配置
    location /mirror{
        # 限制外部请求该地址
        internal;

        # 复制请求到另外一台服务器
        proxy_pass http://mirror.upstream$request_uri;

        proxy_pass_request_body on;
        proxy_set_header X-Original-URI $request_uri; #使用真实的url重置url    
    }
}

        更详细的信息可参考:Nginx流量镜像 - 掘金

### 配置 Nginx 在 Docker 中托管 Vue.js 应用 #### 准备工作 为了使 Nginx 能够在 Docker 容器内正确地服务 Vue.js 单页面应用程序(SPA),需要构建一个合适的 Dockerfile 和配置文件来设置环境。这涉及到创建静态资源的路径以及处理前端路由。 #### 创建项目结构 建立如下所示的基础目录树,用于存放必要的文件: ``` my-vue-app/ ├── dist/ # 构建后的Vue应用输出目录 ├── Dockerfile # Docker镜像定义 └── nginx.conf # 自定义Nginx配置 ``` #### 编写 `Dockerfile` 编写一个简单的 Dockerfile 来指定基础映像并复制所需的文件到容器中: ```dockerfile FROM nginx:alpine # 删除默认html文件夹下的内容 RUN rm -rf /usr/share/nginx/html/* # 将本地dist文件夹中的内容拷贝nginx服务器根目录下 COPY ./dist /usr/share/nginx/html # 复制自定义的nginx配置覆盖默认配置 COPY ./nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 此脚本基于官方轻量级 Alpine 版本的 NGINX 映像,并替换了默认的服务端口暴露和服务启动命令[^1]。 #### 设置 `nginx.conf` 文件 编辑 `nginx.conf` 文件以适应单页应用程序的需求,特别是对于历史模式的支持非常重要。以下是推荐的内容示例: ```nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; } ``` 这段配置确保任何未匹配的实际文件请求都会被重定向回首页 (`index.html`) ,从而允许 HTML5 History API 正常运作[^4]。 #### 构建与运行 Docker 容器 完成上述步骤之后,在项目的根目录执行以下命令来构建新的 Docker 映像并将它作为守护进程启动: ```bash docker build -t my-vue-app . docker run -d -p 80:80 --name vue-nginx-container my-vue-app ``` 通过这些操作,现在应该可以在浏览器里访问由 Nginx 提供服务的 Vue.js 应用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值