使用docker部署应用后,我们可以通过IP和对应的端口来访问,但是还有优化的空间,通过域名访问岂不是更好吗。教程,他来了!这次我们使用的是NginxProxyManager,以下将简称NPM。

项目地址:

https://nginxproxymanager.com

https://github.com/NginxProxyManager/nginx-proxy-manager

前提:

  1. 安装好dockerdocker-compose
  2. 请关闭Nginx等服务,确保80和443端口不被占用。

搭建教程:

  1. 新建NginxProxyManager目录,并cd进入。

  2. 新建docker-compose.yml 文件,内容如下:

    version: '3.8'
    services:
      app:
        image: 'jc21/nginx-proxy-manager:latest'
        restart: unless-stopped
        ports:
          # These ports are in format <host-port>:<container-port>
          - '80:80' # Public HTTP Port
          - '443:443' # Public HTTPS Port
          - '81:81' # Admin Web Port
          # Add any other Stream port you want to expose
          # - '21:21' # FTP
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
        # Uncomment the next line if you uncomment anything in the section
        # environment:
          # Uncomment this if you want to change the location of
          # the SQLite DB file within the container
          # DB_SQLITE_FILE: "/data/database.sqlite"
    
          # Uncomment this if IPv6 is not enabled on your host
          # DISABLE_IPV6: 'true'
    

    将代码复制进去,然后保存退出。

  3. 接着执行docker-compose up -d,等容器启动后,我们访问前台80端口。若能打开则证明安装成功。

  4. 这时候访问它的81端口管理页面,即http://IP:81。默认的超级管理员用户和密码是:

    Email:[email protected]

    Password: changeme

  5. 登录管理页面后,我们去添加一个proxy,域名是你要代理的域名,方案就写http就行了,转发的主机IP填写你的服务器IP(如果NPM和应用在一个机器上,也可以填写docker容器的ip,下面的就都勾选上就行)。

  6. 配置好这个后,我们去开启HTTPS:点击SSL协议,然后选择请求新的SSL证书,勾选强制使用HTTPS,同意条款后保存即可

  7. 都勾选保存后,就可以看到它启动生效了!然后我们去访问这个域名来看看,成功!而且HTTPS也生效了。

  8. 感谢大佬们的开源精神,很不错的项目,如果你想的话,还可以把这个NPM的管理页面也加一层proxy,以后就可以通过域名来访问管理面板了。