需求背景
为解决服务器上的1Panel默认IP端口访问不便及安全隐患,需配置域名反向代理以实现HTTPS访问。
本文将详细介绍如何通过 OpenResty 反向代理功能,实现使用域名访问 1Panel 管理面板。此方法无需修改 1Panel 面板本身的任何域名相关设置,既方便管理,又能配合 SSL 证书提升安全性。
前置条件
- 已在主机上成功安装 1Panel,并能正常登录。
- 已知本地面板的安全访问地址。
- 格式:
http://127.0.0.1:端口/(安全入口)/ - 示例:
http://127.0.0.1:12345/admin/
- 格式:
- 已准备一个域名(如
admin.example.com)并解析至该服务器 IP。
操作步骤
1. 安装 OpenResty
首先,确保在 1Panel 应用商店中已安装 OpenResty。如果尚未安装,请前往应用商店搜索并安装。
2. 创建反向代理网站
- 登录 1Panel,进入 网站 页面。
- 点击 创建网站。
- 选择网站类型为 反向代理。
- 填写以下信息:
- 域名:填写你的域名,例如
admin.example.com。 - 代理地址:填写 1Panel 的本地监听地址,例如
127.0.0.1:12345/。
- 域名:填写你的域名,例如
- 点击 确认创建。
3. 配置安全入口路由(关键步骤)
为了确保能正确访问面板的安全入口(如 /admin/),需要添加特定的反向代理规则。
- 在网站列表中,选择刚才创建的网站(
admin.example.com)。 - 点击 配置 按钮,进入网站设置。
- 找到并点击 反向代理 选项卡。
- 点击 创建反向代理,填写以下信息:
- 名称:自定义,例如
admin。 - 匹配规则:选择
^~,并填写路径/admin/。 - 后端代理地址:填写
http://127.0.0.1:12345/admin/。
- 名称:自定义,例如
- 点击 确认。
4. 访问测试
配置完成后,打开浏览器访问以下地址即可登录 1Panel 面板:
http://admin.example.com/admin/
注意:请确保 URL 末尾包含你的安全入口路径(如
/admin/)。
可选:安全加固建议
为了进一步提升安全性,建议执行以下操作:
- 配置 SSL 证书:
- 在网站设置中,为
admin.example.com申请或部署 SSL 证书,开启 HTTPS 强制跳转,确保数据传输加密。
- 在网站设置中,为
- 关闭面板端口防火墙:
- 由于现在通过域名(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 核心设置的情况下,优雅地通过域名管理你的服务器面板。