标签搜索

目 录CONTENT

文章目录

【Docker系列】一个反向代理神器——Nginx Proxy Manager

咕咕鸽
2021-12-11 / 159 评论 / 20 点赞 / 30,021 阅读 / 1,263 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-07-28,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

image-20211206175320893

前言

上一期留了一个问题,我们怎么样才能把IP+端口变成域名来访问?

答案是用反向代理。

看过之前几期视频的小伙伴应该知道,之前有宝塔的时候,碰到这个情况,我们会先新建一个站点,然后修改Nginx配置文件:

location / {

        proxy_pass http://178.18.249.61:8123/;

        rewrite ^/(.*)$ /$1 break;

        proxy_redirect off;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Upgrade-Insecure-Requests 1;

        proxy_set_header X-Forwarded-Proto https;

}

就可以反向代理的操作(域名访问)了。

很多小伙伴跟着做可以成功,但是可能对反向代理并不是很了解,我们就趁着今天来简单介绍一下。

操作环境

什么是代理

首先代理大家都懂 😃

代理就是第三方。

正向代理

4e46c87b-633d-4836-83e1-49585e65f127

你要买国外小G家的鞋子,你没有paypal和信用卡,买不了,于是你找到了叫小V的代购帮你到海外买,小V找到海外的卖家小G,帮你买了鞋子,然后寄回给了你。

这个小V就是正向代理。

正向代理的特点是,可以保护访问者的信息。因为小V是个职业代购,他在帮你代购鞋子的同时也帮别人代购鞋子,而且他不仅代购鞋子,还代购箱子、家具、电饭煲,卖家小G只知道有人买了我的鞋子,我交给了小V,但并不知道具体是谁买了他家的鞋子。

反向代理

反向代理,顾名思义,正好相反,可以保护卖家的信息。

66bfd3ce-c815-4568-97c2-3d135e33c3c8

具体可以看视频。

好了,回来。

没有了宝塔,我们今天用一个更简单的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

最后

NPM的功能还有很多,预计还有两期,一期讲泛域名证书的配置,一期讲安全防护,这次只是简单介绍一下,大家可以发挥钻研精神,自己先研究研究。

有了NPM,可以统一管理,的确方便了很多,但总觉得还缺少点什么?有没有类似NPM这种有UI界面的工具,可以让我们直观地看到Docker的容器呢?Docker容器如果也可以统一管理,查看状态就很棒,别急,下期给大家带来!

推荐阅读:

【Docker系列】反向代理神器NginxProxyManager——通配符SSL证书申请

【Docker系列】让网站更安全!开启NginxProxyManager网站访问登陆限制功能

如何在Nginx Proxy Manager(NPM)上部署静态网站

Nginx Proxy Manager忘记登陆账号/密码了怎么办?

【Docker魔法系列】NPM与XUI共存!Nginx Proxy Manager搭配X-UI实现Vless+WS+TLS 教程!

20
广告 广告

评论区