内网穿透实现远程访问Nginx Proxy Manager
在现代云计算和虚拟化技术快速发展的背景下,越来越多的开发者和运维人员选择将应用与服务部署在内网或本地开发环境中。然而,有时我们需要从外部网络访问这些服务,这就涉及到内网穿透技术的应用。本文将介绍如何通过Docker部署Nginx Proxy Manager并实现内网穿透。
一、环境准备
在开始之前,确保你的系统已经安装了Docker和Docker Compose。如果尚未安装,可以通过以下命令进行安装:
# 安装Docker
sudo apt-get update
sudo apt-get install -y docker.io
# 安装Docker Compose
sudo apt-get install -y docker-compose
确保Docker和Docker Compose安装成功后,可以通过以下命令确认版本:
docker --version
docker-compose --version
二、部署Nginx Proxy Manager
- 创建项目目录
首先,创建一个新目录来存放Nginx Proxy Manager的配置文件及docker-compose.yml文件:
mkdir nginx-proxy-manager
cd nginx-proxy-manager
- 编写docker-compose.yml文件
在项目目录下创建docker-compose.yml
文件,内容如下:
version: '3'
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "81:81" # Nginx Proxy Manager的管理界面
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
environment:
DB_SQLITE_FILE: "/data/database.sqlite"
volumes:
npm_data:
npm_letsencrypt:
- 启动Nginx Proxy Manager
在项目目录下运行以下命令以启动Nginx Proxy Manager:
docker-compose up -d
这时,Nginx Proxy Manager就已经在后台运行了,可以通过浏览器访问http://<你的服务器IP>:81
来进行管理。初始的登录信息为:
- 用户名:
admin@example.com
- 密码:
changeme
建议首次登录后立即更改密码。
三、配置内网穿透
对于内网穿透,我们可以使用一些工具,比如ngrok、frp等。这里以frp为例进行说明。
- 下载并配置frp
首先,下载frp的服务端(frps)和客户端(frpc)。在你的服务器上运行frps,并在本地计算机上运行frpc。
在你的服务器上下载frp:
wget https://github.com/fatedier/frp/releases/download/v0.50.0/frp_0.50.0_linux_amd64.tar.gz
tar -xzvf frp_0.50.0_linux_amd64.tar.gz
cd frp_0.50.0-linux-amd64
- 配置frps.ini
在服务器上,创建一个frps.ini
配置文件:
[common]
bind_port = 7000
- 启动frps
在服务器上运行:
./frps -c frps.ini
- 配置frpc.ini
在你的本地计算机中,创建一个frpc.ini
文件,配置指定需要穿透到的Nginx Proxy Manager管理界面:
[common]
server_addr = <你的服务器IP>
server_port = 7000
[nginx_manager]
type = http
local_ip = 127.0.0.1
local_port = 81
remote_port = 8080
- 启动frpc
在本地计算机上运行:
./frpc -c frpc.ini
现在,你就可以通过访问http://<你的服务器IP>:8080
来访问Nginx Proxy Manager的管理界面了。
四、总结
本文介绍了如何通过Docker部署Nginx Proxy Manager,并使用frp实现内网穿透,方便从外部网络访问内网中的Nginx Proxy Manager。这种方式不仅灵活,而且十分实用,适合不同场景的需求。如果你对此有其他需求,可以根据实际情况调整配置。希望本文能够帮助你快速实现远程访问。