目录
相关指令
相关模块
以下与代理服务相关的命令均来源于模块ngx_http_proxy_module,使用此模块进行解析,该模块在安装nginx时已经默认添加到nginx中,可以使用 nginx -V 进行查看,是否安装此模块,如果没有安装,可以参考下面文章学习在nginx中添加新的模块的方法。
安装新模块
proxy_pass指令
该指令用来设置被代理服务器的地址,可以是主机名称,ip地址加端口号的形式
语法 | proxy_pass URL; |
---|---|
默认值 | --- |
位置 | location块 |
URL为要设置的被代理服务器地址,包含传输协议(http,https//),主机名称或者ip地址加端口号,URI等要素。
案例
使用代理服务器(192.168.188.10)对服务器(192.168.188.11)进行代理
proxy_pass http://www.baidu.com;
proxy_pass http://192.168.188.11/;
后面的"/"的影响,以下面配置为例:
server {
listen 80;
server_name localhost;
location /server {
#使用不加“/”的写法:此时访问的代理服务器地址为:http://192.168.200.146/server;
proxy_pass http:/192.168.200.146;
#使用加上“/”的写法,此时访问的代理服务器地址为:http//192.168.200.146/index;
proxy_pass http:/192.168.200.146/;
}
}
proxy_set_header指令
该指令可以更改nginx服务器接收到客户端请求的请求头信息,然后将新的请求头发送给代理的服务器
语法 | proxy_set_header field value; |
---|---|
位置 | proxy_set_header Host $proxy_host; peoxy_set_header Connection close; |
默认值 | http块,server块,location块 |
案例
改变服务器头信息中的username参数,观察代理服务器的输出情况
被代理服务器配置
server {
listen 8080;
server localhost;
default_type text/plain;
return 200 $http_username;
}
代理服务器配置
server {
listen 8081;
server localhost;
location /server {
#192.168.188.18为被代理服务器的ip地址
proxy_pass http://192.168.188.10:8080/;
proxy_set_header username Tom;
}
}
proxy_redirect指令
使用该指令来重置头信息中的"Location"和“Refresh”的值
使用该命令的好处:
如果不使用该命令,在我们进行访问代理服务器进行跳转时,网站URL也会进行跳转,将服务器ip地址暴露,为了隐藏服务器,因此使用此命令重置Location和Refresh的值
语法 | proxy_redirect redirect replacement; proxy_redirect default; proxy_redirect off; |
---|---|
默认值 | proxy_redirect off; |
位置 | http块,server块,location块 |
案例
隐藏服务器的ip地址,使服务器对用户来说是透明的
服务端配置
server {
listen 8081;
server_name localhost;
if (-f $request_filename) {
return 302 http://192.168.188.10/;
}
}
代理服务器配置
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://192.168.188.10:8081;
proxy_pass http:/192.168.200.146/ http://192.168.200.133/;
}
}
正向代理
需求分析
在不使用代理时,客户端直接访问服务器,在使用代理服务器是,客户端通过访问代理服务器来获取服务器的资源。此时,服务端对客户端来说不是透明存在的。正向代理需要在客户端上进行代理服务器的配置
环境准备
默认web服务使用80端口
ip地址 | 角色 |
---|---|
192.168.188.1 | 客户端 |
192.168.188.10 | 代理服务器 |
192.168.188.11 | 服务器 |
配置
主机配置
在本地主机启用网络代理功能,将代理服务器的ip地址和端口号进行配置
服务器配置
主配置文件
server {
listen 80;
server_name localhost;
error_log /var/log/nginx/www.qfedu.com-error_log error;
location / {
access_log /var/log/nginx/server.log server;
root /usr/share/nginx/html;
index a.html;
}
}
web文件配置
<h1>this is '192.168.188.11'</h1>
不使用代理
使用主机进行访问时,服务器上面的日志显示的客户端为192.168.188.1,显示的服务端为192.168.188.11
代理服务器配置
server {
listen 80;
resolver 8.8.8.8;
server_name localhost;
location / {
proxy_pass http://$host$request_uri;
}
使用代理
使用代理服务器来进行对服务器的访
反向代理
需求分析
Nginx反向代理是一种网络架构技术,通过该技术,Nginx服务器充当客户端和内部服务器之间的中介。客户端发送的请求首先被Nginx接收,然后Nginx根据配置规则将这些请求转发给内部网络中的其他服务器。服务器处理完请求后,将响应发送回Nginx,Nginx再将这个响应返回给原始客户端。
环境准备
服务地址 | 角色 | 服务名 |
192.168.188.1 | 客户 | --- |
192.168.188.10 | 代理服务器 | --- |
192.168.188.11:8081 | 服务器 | server1 |
192.168.188.11:8082 | 服务器 | server2 |
192.168.188.11:8083 | 服务器 | server3 |
此时用192.168.188.11的三个端口来模拟三个不同的服务,用户通过访问代理服务器,代理服务器将用户的访问请求发送给服务器,再由服务器返回信息给代理,最后由代理服务器将资源返还给客户端。此时,三个服务为不同服务,后面三个服务相同时,即为nginx的负载均衡配置,后再后面进行讲解
配置
服务器配置
在192.168.188.11的三个端口8081-8083上面配置相关服务,并自定义web页面和日志信息,便于进行验证
server1
server {
listen 8081;
server_name 192.168.188.11;
location / {
access_log /var/log/nginx/server1.log server;
root /usr/share/nginx/html;
index server1.html;
}
}
server2
server {
listen 8082;
server_name 192.168.188.11;
location / {
access_log /var/log/nginx/server2.log server;
root /usr/share/nginx/html;
index server2.html;
}
}
server3
server {
listen 8083;
server_name 192.168.188.11;
location / {
access_log /var/log/nginx/server3.log server;
root /usr/share/nginx/html;
index server3.html;
}
}
验证配置
server1
server2
server3
代理服务器配置
在代理服务器192.168.188.10上面使用proxy_pass命令来对上面三个服务进行代理,使用户可以访问代理服务器来获取服务器资源
server {
listen 80;
server_name localhost;
location /server1 {
proxy_pass http://192.168.188.11:8081/;
}
location /server2 {
proxy_pass http://192.168.188.11:8082/;
}
location /server3 {
proxy_pass http://192.168.188.11:8083/;
}
}
测试配置
server1
此时,使用客户端192.168.188.1来访问代理服务器192.168.188.10下的server1,从server1的日志可以看出,代理服务器去访问服务器server1从而返回数据给客户端
server2
此时,使用客户端192.168.188.1来访问代理服务器192.168.188.10下的server2,从server2的日志可以看出,代理服务器去访问服务器server2从而返回数据给客户端
server3
标签:http,代理服务,192.168,server,nginx,proxy,代理服务器,服务器 From: https://blog.csdn.net/qq_63781342/article/details/144675923此时,使用客户端192.168.188.1来访问代理服务器192.168.188.10下的server3,从server3的日志可以看出,代理服务器去访问服务器server3从而返回数据给客户端