正向代理中,客户端通过代理服务器从服务端收发数据,即为正向代理。
举个栗子:有一个局域网,但是只有主机局域访问外部网络的权限,现在所有的机器都需要访问外部网络,通过将主机设置为代理服务器,让所有的机器通过主机可以访问外部网络,即称为正向代理。
反向代理中,代理服务器替服务端收发数据,所有的请求与相应都经过反向代理,可以用来实现数据缓存,负载均衡等。
举个栗子: 张三开了一个保险公司(服务端),一开始公司业务小,一个人接电话就够了,后来随着公司扩张,每天无数电话打进来,张三招了一个客服李四(代理),张三把和客户对接的事情都交给了李四,形成了反向代理。
配置项很多,挑几个几个常用的配置依次介绍:location、proxy_set_header、rewrite、proxy_pass
当然还有”!“、”^“匹配,用的比较少,这里不做说明
这里还有很多数据,不一一说明
包含3个参数:
用法示例:
301重定向表示永久性重定向,对于SEO相较302来说比较友好,这里不做过多说明。
nginx doc
nginx rewrite 配置
负载均衡配置是超大型机器需要考虑的一些问题 同时也是数据安全的一种做法 下面我来介绍在nginx中反向代理 负载均衡配置图解 大家可参考本文章来操作首先简单的介绍下修改默认的nginx conf 大概在 ~ 行 去掉前面的#号 重启nginx
#location ~ php$ {# proxy_pass #}改为 location ~ php$ { proxy_pass // : }
分别访问 出现如下图已经能够针对不同请求访问服务器了
这样当我们访问 l的时候 前端的nginx会自动进行响应 当访问 /test php的时候(这个时候nginx目录下根本就没有该文件) 但是通过上面的设置location ~ php$(表示
访问php页面test php : 的Apache进行响应
访问目录phpMyAdmin下的页面的话 : 的Apache进行响应
修改原始默认的nginx conf的server模块部分(大概在 ~ 行)
#location ~ php$ {# proxy_pass #}修改为 location ^~ /phpMyAdmin/ { proxy_pass : } location ~ php$ { proxy_pass : }
上面第一个部分location ^~ /phpMyAdmin/ 表示不使用index index
2.在配置文件nginx.conf的模块中添加服务器集群server cluster的定义。Tw.WinGWit.
upstream myCluster { server 192.168.2.3:8080 server 192.168.2.2:80 server 192.168.2.8:80 }
表示这个server cluster包含3台服务器
3.然后在server模块中定义负载均衡
location ~ .php$ { proxy_pass //myCluster proxy_redirect offproxy_set_header Host $hostproxy_set_header X-Real-IP $remote_addrproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for}
proxy_pass //myCluster 这里的名字和上面的cluster的名字相同
配置好后,当访问页面,nginx目录下根本没有该文件,但是它会自动将其pass到myCluster定义的服务器群,分别由上述的3台服务器中的一台来做处理。
上面在定义upstream的时候每个server之后没有定义权重,表示两者均衡;如果希望某个更多响应的话,可以加weight
upstream myCluster { server 192.168.2.3:8080 weight=5server 192.168.2.2:80 server 192.168.2.8:80 }
这样表示5/7的几率访问第一个server,1/7访问第二个、第三个。另外还可以定义max_fails和fail_timeout等参数。
所以我们使用nginx的反向代理服务器reverse proxy server的功能,将其布置到多台apache server的前端。
nginx仅仅用来处理静态页面响应和动态请求的代理pass,后台的apache服务器来对前台pass过来的动态页面进行处理并返回给nginx。
什么是 Nginx Proxy Manager ? Nginx Proxy Manager 是用于管理 Nginx 代理主机的 Docker 容器,具有简单、强大的界面。它使您可以轻松地转发到您在家里或其他地方运行的网站,包括免费的 SSL,而无需对 Nginx 或 Letsencrypt 了解太多。 通过 phpMyAdmin 在 MariaDB 10 中新建用户 npm ,创建同名的库 npm 并授予所有权限。在注册表中搜索 nginx-proxy-manager ,选择第一个 jc21/nginx-proxy-manager,版本选择 latest。 在 docker 文件夹中,创建一个新文件夹,并将其命名为 npm,再建 2 个子目录,分别命名为 data 和 letsencrypt 端口 端口不冲突就行,不确定的话可以用命令查一下 在浏览器中输入 http://群晖IP:2081 就能看到主界面 默认的账号: admin@example.com ,密码:changeme 登录后可以编辑用户信息 之后是密码 进入主菜单的 SSL Certificates Add SSL Certificate 有两种方式,一种是在线申请,另一种是添加已有证书 在线申请和我们在『 免费的泛域名https证书自动续期 』一文中介绍的非常类似,需要选择 DNS 解析服务提供商,以及填写 token 等参数 老苏因为已经配置了 Certbot 并实现了自动续期,所以只需要导入现有证书就可以了,Name 老苏用了域名,这样比较容易识别 上传成功后,证书存放在 /data/custom_ssl/ 目录中以 npm-1 、 npm-2 等子目录保存 进入主菜单的 Hosts 以将 http://192.168.0.197:5000 映射到 https://nas.laosu.ml 为例 因为准备用 https 协议访问,所以必须勾选 Force SSL 其他的 HTTP/2 和 HSTS 和群晖内置的是一样的,可根据需要勾选,没啥问题的话老苏建议都勾上 为什么要另外安装 nginx proxy manager 而不是用群晖内置的反向代理的原因,老苏在一开始就讲了,装完之后老苏还发现了几个优点:欢迎分享,转载请注明来源:夏雨云
评论列表(0条)