nginx反向代理服务
1.什么是代理
代理一词往往并不陌生, 该服务我们常常用到如(代理理财、代理租房、代理收货等等),如下图所示
2.没有代理
在没有代理模式的情况下,客户端和Nginx服务端,都是客户端直接请求服务端,服务端直接响应客户端。
3.有代理
那么在互联网请求里面,为了安全客户端往往无法直接向服务端发起请求,就需要用到代理服务,来实现客户端和服务端通信,如下图所示
4.Nginx代理服务常见模式
Nginx作为代理服务,按照应用场景模式进行总结,代理分为
1.正向代理
2.反向代理
正向代理&#xff0c;(内部上网) 客户端 <—> 代理 -> 服务端
反向代理&#xff0c;用于公司集群架构中&#xff0c;客户端 -> 代理 <—> 服务端
1.区别在于形式上服务的”对象”不一样
2.正向代理代理的对象是客户端&#xff0c;为客户端服务
3.反向代理代理的对象是服务端&#xff0c;为服务端服务
三、Nginx代理服务支持协议
1.支持的协议
2.反向代理使用协议
3.模块总结
反向代理模式与Nginx代理模块总结如表格所示
反向代理模式 | Nginx配置模块 |
---|
http、websocket、https、tomcat&#xff08;java程序&#xff09; | ngx_http_proxy_module |
fastcgi&#xff08;php程&#xff09; | ngx_http_fastcgi_module |
uwsgi&#xff08;python&#xff09; | ngx_http_uwsgi_module |
grpc&#xff08;go程序&#xff09;golang | ngx_http_v2_module |
四、nginx代理实践
1.环境准备
主机 | IP | 身份 |
---|
lb01 | 10.0.0.4 | 代理 |
web01 | 172.16.1.7 | web服务端 |
2.代理语法
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
3.网站配置&#xff08;web01&#xff09;
[root&#64;web01 ~]
server {
listen 80;
server_name linux.wp.com;
location / {
root /code/wordpress;
index index.php;
}
location ~* \\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /code/wordpress/$fastcgi_script_name;
include fastcgi_params;
}
}
[root&#64;web01 ~]
drwxr-xr-x 5 www www 4096 4月 16 19:30 wordpress
10.0.0.7 linux.wp.com
http://linux.wp.com/
4.配置Nginx代理&#xff08;lb01&#xff09;
cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx-stable]
name&#61;nginx stable repo
baseurl&#61;http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck&#61;1
enabled&#61;1
gpgkey&#61;https://nginx.org/keys/nginx_signing.key
module_hotfixes&#61;true
EOF
[root&#64;lb01 ~]
[root&#64;lb01 ~]
[root&#64;lb01 ~]
user www;
[root&#64;lb01 ~]
[root&#64;lb01 ~]
server {
listen 80;
server_name linux.wp.com;
location / {
proxy_pass http://172.16.1.7:80;
}
}
5.重启代理nginx访问测试
[root&#64;lb01 ~]
10.0.0.4 linux.wp.com
结果&#xff1a;访问的页面不是我们要的内容&#xff0c;返回了web端第一个配置文件的内容
6.配置代理携带域名访问web端
[root&#64;lb01 ~]
server {
listen 80;
server_name linux.wp.com;
location / {
proxy_pass http://172.16.1.7:80;
proxy_set_header Host $http_host;
}
}
[root&#64;lb01 ~]
再次访问http://linux.wp.com/&#xff0c;得到想要的内容
五、Nginx代理常用参数
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $http_host;
proxy_set_header Connection close;
Context: http, server, location
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location
Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location
Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
[root&#64;lb01 ~]
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 10s;
proxy_read_timeout 10s;
proxy_send_timeout 10s;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 8 8k;
[root&#64;lb01 ~]
server {
listen 80;
server_name linux.proxy.com;
location / {
proxy_pass http://10.0.0.7:80;
include proxy_params;
}
}