使用域名原生支持 1Panel 面板访问

6 阅读3分钟

需求背景

为解决服务器上的1Panel默认IP端口访问不便及安全隐患,需配置域名反向代理以实现HTTPS访问。

本文将详细介绍如何通过 OpenResty 反向代理功能,实现使用域名访问 1Panel 管理面板。此方法无需修改 1Panel 面板本身的任何域名相关设置,既方便管理,又能配合 SSL 证书提升安全性。


前置条件

  1. 已在主机上成功安装 1Panel,并能正常登录。
  2. 已知本地面板的安全访问地址。
    • 格式:http://127.0.0.1:端口/(安全入口)/
    • 示例:http://127.0.0.1:12345/admin/
  3. 已准备一个域名(如 admin.example.com)并解析至该服务器 IP。

操作步骤

1. 安装 OpenResty

首先,确保在 1Panel 应用商店中已安装 OpenResty。如果尚未安装,请前往应用商店搜索并安装。

2. 创建反向代理网站

  1. 登录 1Panel,进入 网站 页面。
  2. 点击 创建网站
  3. 选择网站类型为 反向代理
  4. 填写以下信息:
    • 域名:填写你的域名,例如 admin.example.com
    • 代理地址:填写 1Panel 的本地监听地址,例如 127.0.0.1:12345/
  5. 点击 确认创建

3. 配置安全入口路由(关键步骤)

为了确保能正确访问面板的安全入口(如 /admin/),需要添加特定的反向代理规则。

  1. 在网站列表中,选择刚才创建的网站(admin.example.com)。
  2. 点击 配置 按钮,进入网站设置。
  3. 找到并点击 反向代理 选项卡。
  4. 点击 创建反向代理,填写以下信息:
    • 名称:自定义,例如 admin
    • 匹配规则:选择 ^~,并填写路径 /admin/
    • 后端代理地址:填写 http://127.0.0.1:12345/admin/
  5. 点击 确认

4. 访问测试

配置完成后,打开浏览器访问以下地址即可登录 1Panel 面板:

http://admin.example.com/admin/

注意:请确保 URL 末尾包含你的安全入口路径(如 /admin/)。


可选:安全加固建议

为了进一步提升安全性,建议执行以下操作:

  1. 配置 SSL 证书
    • 在网站设置中,为 admin.example.com 申请或部署 SSL 证书,开启 HTTPS 强制跳转,确保数据传输加密。
  2. 关闭面板端口防火墙
    • 由于现在通过域名(80/443 端口)即可访问面板,建议在服务器防火墙或安全组中关闭 1Panel 面板的原始端口(如 12345),防止直接通过 IP:端口 进行访问。

附录:Nginx 反向代理配置参考

以下是上述操作生成的标准 Nginx 配置文件参考,供高级用户排查问题使用:

server {
    listen 80;
    server_name admin.example.com;
    index index.php index.html index.htm default.php default.htm default.html;
    access_log /www/sites/admin.example.com/log/access.log main;
    error_log /www/sites/admin.example.com/log/error.log;

    # 隐藏敏感文件
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
        return 404;
    }

    # Let's Encrypt 验证路径
    location ^~ /.well-known/acme-challenge {
        allow all;
        root /usr/share/nginx/html;
    }

    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    root /www/sites/admin.example.com/index;

    # 引入反向代理配置文件
    include /www/sites/admin.example.com/proxy/*.conf;

    # 配置安全入口 /admin/ 的代理
    location ^~ /admin/ {
        proxy_pass http://127.0.0.1:12345/admin/;
        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 REMOTE-HOST $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_http_version 1.1;
        add_header X-Cache $upstream_cache_status;
        proxy_ssl_server_name off;
        proxy_ssl_name $proxy_host;
    }

    # 根路径代理
    location ^~ / {
        proxy_pass http://127.0.0.1:12345/;
        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 REMOTE-HOST $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_http_version 1.1;
        add_header X-Cache $upstream_cache_status;
        proxy_ssl_server_name off;
        proxy_ssl_name $proxy_host;
    }
}

通过以上配置,你可以在不触及 1Panel 核心设置的情况下,优雅地通过域名管理你的服务器面板。