简介:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
正向代理和反向代理联系与区别:
1、正向代理:日常使用vpn,当用户使用vpn访问百度、京东、淘宝的时候,这时对于服务器而言用户是不可见的,他们并不知道用户访问的来源。
2、反向代理:服务器使用反向代理做负载均衡,这时对于用户而言服务器是不可见的,用户并不知道是哪个服务器给你传回来数据。
3、正向代理和反向代理的作用:实际上对于各自都是无感知的,他们只需要明确自己的需求和结果,比如用户只需要知道自己需要得到什么,而服务器只需要知道自己需要返回什么,而返回的过程并不需要关心,实际上一个传输的过程中完全有可能存在正向代理和反向代理两种模式,当你使用vpn访问一个使用了负载均衡的服务器。
4、正向代理和反向代理的区别:
正向代理隐藏的是用户,反向代理隐藏的是服务器。 正向代理是为用户服务的,反向代理是为服务器服务的。正向代理隐藏的是用户,反向代理隐藏的是服务器。 正向代理是为用户服务的,反向代理是为服务器服务的。正向代理隐藏的是用户,反向代理隐藏的是服务器。 正向代理是为用户服务的,反向代理是为服务器服务的。
大白话解释正向代理和反向代理:
正向代理:当我雇佣一个外卖小哥去帮我买外卖,对于商家而言并不知道买家是谁,这个例子中外卖小哥为用户服务即为正向代理。
反向代理:商家有多个店铺,雇佣一个外卖小哥送外卖,对于用户而言并不知道手上的商品是从哪个店铺发出的。这个例子中外卖小哥为商家服务即为反向代理。
历史攻略:
编辑docker-compose.yml:vim docker-compose.yml
version<span class="token punctuation">:</span> <span class="token string">"3"</span> services<span class="token punctuation">:</span> app<span class="token punctuation">:</span> image<span class="token punctuation">:</span> <span class="token string">'jc21/nginx-proxy-manager:latest'</span> restart<span class="token punctuation">:</span> unless<span class="token operator">-</span>stopped ports<span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token string">'8081:80'</span> <span class="token operator">-</span> <span class="token string">'443:443'</span> <span class="token operator">-</span> <span class="token string">'8082:81'</span> environment<span class="token punctuation">:</span> DB_MYSQL_HOST<span class="token punctuation">:</span> <span class="token string">"db"</span> DB_MYSQL_PORT<span class="token punctuation">:</span> <span class="token number">3306</span> DB_MYSQL_USER<span class="token punctuation">:</span> <span class="token string">"npm"</span> DB_MYSQL_PASSWORD<span class="token punctuation">:</span> <span class="token string">"npm"</span> DB_MYSQL_NAME<span class="token punctuation">:</span> <span class="token string">"npm"</span> volumes<span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token punctuation">.</span><span class="token operator">/</span>data<span class="token punctuation">:</span><span class="token operator">/</span>data <span class="token operator">-</span> <span class="token punctuation">.</span><span class="token operator">/</span>letsencrypt<span class="token punctuation">:</span><span class="token operator">/</span>etc<span class="token operator">/</span>letsencrypt depends_on<span class="token punctuation">:</span> <span class="token operator">-</span> db db<span class="token punctuation">:</span> image<span class="token punctuation">:</span> <span class="token string">'jc21/mariadb-aria:latest'</span> restart<span class="token punctuation">:</span> unless<span class="token operator">-</span>stopped environment<span class="token punctuation">:</span> MYSQL_ROOT_PASSWORD<span class="token punctuation">:</span> <span class="token string">'npm'</span> MYSQL_DATABASE<span class="token punctuation">:</span> <span class="token string">'npm'</span> MYSQL_USER<span class="token punctuation">:</span> <span class="token string">'npm'</span> MYSQL_PASSWORD<span class="token punctuation">:</span> <span class="token string">'npm'</span> volumes<span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token punctuation">.</span><span class="token operator">/</span>data<span class="token operator">/</span>mysql<span class="token punctuation">:</span><span class="token operator">/</span>var<span class="token operator">/</span>lib<span class="token operator">/</span>mysqlversion<span class="token punctuation">:</span> <span class="token string">"3"</span> services<span class="token punctuation">:</span> app<span class="token punctuation">:</span> image<span class="token punctuation">:</span> <span class="token string">'jc21/nginx-proxy-manager:latest'</span> restart<span class="token punctuation">:</span> unless<span class="token operator">-</span>stopped ports<span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token string">'8081:80'</span> <span class="token operator">-</span> <span class="token string">'443:443'</span> <span class="token operator">-</span> <span class="token string">'8082:81'</span> environment<span class="token punctuation">:</span> DB_MYSQL_HOST<span class="token punctuation">:</span> <span class="token string">"db"</span> DB_MYSQL_PORT<span class="token punctuation">:</span> <span class="token number">3306</span> DB_MYSQL_USER<span class="token punctuation">:</span> <span class="token string">"npm"</span> DB_MYSQL_PASSWORD<span class="token punctuation">:</span> <span class="token string">"npm"</span> DB_MYSQL_NAME<span class="token punctuation">:</span> <span class="token string">"npm"</span> volumes<span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token punctuation">.</span><span class="token operator">/</span>data<span class="token punctuation">:</span><span class="token operator">/</span>data <span class="token operator">-</span> <span class="token punctuation">.</span><span class="token operator">/</span>letsencrypt<span class="token punctuation">:</span><span class="token operator">/</span>etc<span class="token operator">/</span>letsencrypt depends_on<span class="token punctuation">:</span> <span class="token operator">-</span> db db<span class="token punctuation">:</span> image<span class="token punctuation">:</span> <span class="token string">'jc21/mariadb-aria:latest'</span> restart<span class="token punctuation">:</span> unless<span class="token operator">-</span>stopped environment<span class="token punctuation">:</span> MYSQL_ROOT_PASSWORD<span class="token punctuation">:</span> <span class="token string">'npm'</span> MYSQL_DATABASE<span class="token punctuation">:</span> <span class="token string">'npm'</span> MYSQL_USER<span class="token punctuation">:</span> <span class="token string">'npm'</span> MYSQL_PASSWORD<span class="token punctuation">:</span> <span class="token string">'npm'</span> volumes<span class="token punctuation">:</span> <span class="token operator">-</span> <span class="token punctuation">.</span><span class="token operator">/</span>data<span class="token operator">/</span>mysql<span class="token punctuation">:</span><span class="token operator">/</span>var<span class="token operator">/</span>lib<span class="token operator">/</span>mysqlversion: "3" services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '8081:80' - '443:443' - '8082:81' environment: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" 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
启动服务:
docker<span class="token operator">-</span>compose up <span class="token operator">-</span>ddocker<span class="token operator">-</span>compose up <span class="token operator">-</span>ddocker-compose up -d
访问:
访问管理后台:http://{ip}:8082/
注册邮箱和修改密码
配置反向代理:
搭建的服务 和 nginx proxy manager服务 填写规则:
1、不在一个服务器,则填写能访问对应服务的IP
2、在同一台服务器上,则填写在服务器中输入127.0.0.1
3、在同一台服务器上,docker容器搭建web应用,则填写在服务器中输入
`ip addr show docker0` 命令获取得到的ip,一般为<span class="token number">172.17</span><span class="token number">.0</span><span class="token number">.1</span>`ip addr show docker0` 命令获取得到的ip,一般为<span class="token number">172.17</span><span class="token number">.0</span><span class="token number">.1</span>`ip addr show docker0` 命令获取得到的ip,一般为172.17.0.1
填写示例:
综上:通过搭建和使用Nginx Proxy Manager,可以快速完成设置反向代理,简单易上手。
原文链接:https://blog.csdn.net/hzblucky1314/article/details/129483881