Nginx 请求拷贝、请求镜像

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

        场景需求:公司门禁系统的打卡数据只支持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 Alpine 镜像 Nginx 的官方镜像是基于 Debian 或者 Alpine Linux 构建的,其中 `nginx:alpine` 是一种轻量级的选择[^1]。Alpine 版本相较于其他基础镜像更小,适合资源受限或者需要快速启动容器的应用场景。 #### 自定义镜像制作 为了创建一个自定义的 Nginx 镜像,可以使用 Dockerfile 来指定所需的配置文件和其他依赖项。例如,在当前时间点(2024 年 10 月),推荐使用稳定版本 `nginx:1.26.2-alpine` 进行开发。以下是构建自定义镜像的一个基本流程: ```Dockerfile FROM nginx:1.26.2-alpine # 复制自定义的 nginx.conf 文件到容器中 COPY nginx.conf /etc/nginx/nginx.conf # 可选:复制静态网站文件到默认根目录 COPY html/ /usr/share/nginx/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 上述 Dockerfile 中的关键部分解释如下: - **FROM 指令** 定义了基础镜像为 `nginx:1.26.2-alpine`。 - **COPY 指令** 将本地的 `nginx.conf` 和 HTML 资源文件夹拷贝至容器内的对应路径。 - **EXPOSE 指令** 声明服务监听端口为 80。 - **CMD 指令** 启动 Nginx,并设置其运行于前台模式。 要构建此镜像,可执行以下命令[^2]: ```bash docker build -t my-custom-nginx:latest . ``` #### 配置示例 对于某些特定需求,可能需要调整 Nginx 的配置文件来实现功能扩展。比如禁用 `.htaccess` 文件访问的功能可以通过修改 `nginx.conf` 实现[^3]: ```nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } # 禁止访问 .htaccess 类型的隐藏文件 location ~ /\.ht { deny all; } } ``` 以上片段展示了如何通过正则表达式匹配并拒绝请求任何以 `.ht` 开头的文件。 #### 测试与验证 完成镜像构建之后,可通过以下方式测试新镜像是否正常工作: ```bash docker run --name custom-nginx-test -p 8080:80 -d my-custom-nginx:latest ``` 打开浏览器访问 `http://localhost:8080` 即可查看效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值