简介
我们怎么样才能把 IP + 端口变成域名来访问?
答案是用反向代理
- nginx proxy manager
项目展示
GitHub原项目地址(感谢作者的付出):https://github.com/NginxProxyManager/nginx-proxy-manager
Docker镜像地址:https://hub.docker.com/r/jlesage/nginx-proxy-manager
官网地址:https://nginxproxymanager.com/
环境准备
- 服务器:腾讯云轻量应用服务器
- 系统:Debian 10
- 域名一枚,并做好解析到服务器上
- 安装好 Docker、Docker-compose
什么是代理
代理就是第三方。
正向代理
你要买国外小 G 家的鞋子,你没有 paypal 和信用卡,买不了,于是你找到了叫小 V 的代购帮你到海外买,小 V 找到海外的卖家小 G,帮你买了鞋子,然后寄回给了你。
这个小 V 就是正向代理。
正向代理的特点是,可以保护访问者的信息。因为小 V 是个职业代购,他在帮你代购鞋子的同时也帮别人代购鞋子,而且他不仅代购鞋子,还代购箱子、家具、电饭煲,卖家小 G 只知道有人买了我的鞋子,我交给了小 V,但并不知道具体是谁买了他家的鞋子。
反向代理
反向代理,顾名思义,正好相反,可以保护卖家的信息。
具体可以看视频。
好了,回来。
没有了宝塔,我们今天用一个更简单的 Docker 项目来完成反向代理的操作。
Nginx Proxy Manager
Nginx proxy manager 是一个很简单的反向代理工具。
官网:https://nginxproxymanager.com/
门槛极低,操作简单,不需要你掌握很复杂的 Nginx 配置知识,只需要几步就能很轻松完成反向代理的设置和 SSL 证书的部署。
it had to be so easy that a monkey could do it.
配置参考:
Docker-compose 文件:
version: "3" 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 environment: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: 'true' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db db: image: 'jc21/mariadb-aria:latest' restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql
默认登陆名和密码:
Email: admin@example.com Password: changeme
查看当前服务器 IP:
curl ifconfig.me
查看 Docker 容器内部 IP:
ip addr show docker0
关于 Internal Server Error 问题
主要是因为数据库链接和初始化。 在
docker-compose
中有个映射是 →./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
这个.sql
文件可以去作者的仓库里面找到:https://github.com/mikecao/umami/blob/master/sql/schema.mysql.sql
需要提前映射到安装的地方,来初始化数据库(也就是要提前建表),整了一天才发现主要问题在这…… 可能主要是因为这个东西可以静态部署,所以没有整合到应用里,需要手动执行?
大家可以自行测试一下!
原文链接:https://www.dianjilingqu.com/467184.html