dqzboy / Docker-Proxy

🔥 🔥 🔥 自建Docker镜像加速服务,基于官方Docker Registry 一键部署Docker、K8s、Quay、Ghcr、Mcr、Nvcr等镜像加速\管理服务。支持免服务器部署到Render\Koyeb
https://dqzboy.github.io/docs/
Apache License 2.0
1.9k stars 299 forks source link

🚀 功能建议:使用openresty替换nginx减少域名配置的长度 #25

Open liwenson opened 1 month ago

liwenson commented 1 month ago

⚠️ 搜索是否存在类似issue

总结

使用openresty的lua脚本,减少nginx域名的配置

    # Server 区域
    server {
        listen 443 ssl;
        server_name
            hub.your_domain_name
            gcr.your_domain_name
            ghcr.your_domain_name
            quay.your_domain_name
            k8s-gcr.your_domain_name
            k8s.your_domain_name
            mcr.your_domain_name
            elastic.your_domain_name
            nvcr.your_domain_name;

        ## 证书文件名称(填写你证书存放的路径和名称)
        ssl_certificate your_domain_name.crt;
        ## 私钥文件名称(填写你证书存放的路径和名称)
        ssl_certificate_key your_domain_name.key;
        ssl_session_timeout 1d;
        ssl_session_cache   shared:SSL:50m;
        ssl_session_tickets off;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_buffer_size 8k;
        proxy_connect_timeout 600;
        proxy_send_timeout    600;
        proxy_read_timeout    600;
        send_timeout          600;

        # 动态设置 proxy_pass
        location / {
            set_by_lua_block $backend {
                local backend_mapping = {
                    ["gcr.your_domain_name"]     = "http://127.0.0.1:53000",
                    ["ghcr.your_domain_name"]    = "http://127.0.0.1:52000",
                    ["quay.your_domain_name"]    = "http://127.0.0.1:56000",
                    ["k8s-gcr.your_domain_name"] = "http://127.0.0.1:54000",
                    ["k8s.your_domain_name"]     = "http://127.0.0.1:55000",
                    ["mcr.your_domain_name"]     = "http://127.0.0.1:57000",
                    ["elastic.your_domain_name"] = "http://127.0.0.1:58000",
                    ["nvcr.your_domain_name"]    = "http://127.0.0.1:59000",
                    ["hub.your_domain_name"]     = "http://127.0.0.1:51000"
                }
                return backend_mapping[ngx.var.host] or "http://localhost:51000"
            }

            # 动态代理请求
            proxy_pass $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;
            proxy_set_header X-Nginx-Proxy true;
        }
    }

举例

No response

动机

No response

dqzboy commented 1 month ago

👍