You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX反向代理与URL重写配置示例请求

NGINX URL重写与反向代理配置示例

以下是针对你需求的具体配置方案,核心是通过rewrite指令替换请求URL中的域名部分,同时将HTTPS请求转为HTTP转发到内部仓库:

基础HTTP请求处理配置

适用于包管理器发起HTTP请求的场景:

server {
    listen 80;
    # 填写你在hosts中映射的所有域名
    server_name ubuntu.com mirrors.centos.org;

    # 重写规则:剥离原域名,拼接内部仓库地址
    # 匹配HTTP/HTTPS开头的URL,替换域名部分为内部仓库地址+端口
    rewrite ^https?://[^/]+(/.*)$ http://192.168.1.100:8080$1 break;

    # 反向代理到内部仓库(HTTP协议)
    proxy_pass http://192.168.1.100:8080;
    # 保留原请求的Host头,避免后端仓库校验域名
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

HTTPS请求处理配置

如果包管理器发起HTTPS请求,需要配置SSL证书(内部环境可使用自签名证书):

1. 生成自签名SSL证书(可选)

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
    -keyout /etc/nginx/certs/internal-repo.key \
    -out /etc/nginx/certs/internal-repo.crt

2. NGINX HTTPS配置

server {
    listen 443 ssl;
    server_name ubuntu.com mirrors.centos.org;

    # 配置SSL证书路径
    ssl_certificate /etc/nginx/certs/internal-repo.crt;
    ssl_certificate_key /etc/nginx/certs/internal-repo.key;

    # 重写规则:将HTTPS请求转为HTTP转发到内部仓库
    rewrite ^https?://[^/]+(/.*)$ http://192.168.1.100:8080$1 break;

    proxy_pass http://192.168.1.100:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 传递原请求协议给后端
    proxy_set_header X-Forwarded-Proto $scheme;
}

多域名映射不同仓库的优化方案

如果不同域名对应不同内部仓库,可以用map指令统一管理映射关系:

# 在http块中添加map配置
map $host $repo_backend {
    default http://default-repo:80;       # 默认仓库
    ubuntu.com http://ubuntu-repo:8080;   # Ubuntu仓库
    mirrors.centos.org http://centos-repo:8081; # CentOS仓库
}

server {
    listen 80;
    listen 443 ssl;
    server_name ubuntu.com mirrors.centos.org;

    ssl_certificate /etc/nginx/certs/internal-repo.crt;
    ssl_certificate_key /etc/nginx/certs/internal-repo.key;

    # 动态匹配对应仓库的重写规则
    rewrite ^https?://[^/]+(/.*)$ $repo_backend$1 break;

    proxy_pass $repo_backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

配置说明

  • 将示例中的192.168.1.100:8080、ubuntu-repo:8080等替换为实际的内部仓库IP/域名和端口
  • rewrite指令中的break参数表示重写后停止后续规则,直接进入反向代理流程
  • 保留Host头是为了兼容部分仓库对请求域名的校验

内容的提问来源于stack exchange,提问作者Davoud Teimouri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:46:30