Nginx学习笔记——场景实践之《代理服务》
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Nginx学习笔记——场景实践之《代理服务》,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4214字,纯文字阅读大概需要7分钟。
内容图文
![Nginx学习笔记——场景实践之《代理服务》](/upload/InfoBanner/zyjiaocheng/981/02841bc66d5b4e0c9c355b9eee616d14.jpg)
代理服务
Nginx可以做【HTTP、HTTPS】、【ICMP、POP、IMAP】邮件、【RTMP】流媒体的代理。
正向代理
比如:公司内只有一台电脑可以连入公网,所有的计算机一个代理,通过这台计算机(代理)都可以连入公网。
反向代理
比如:一个客户端请求一个网站,往往请求的是代理,通过代理给你分配一个服务器,让你访问。
正反向的区别
正向代理代理的对象是客户端。
反向代理代理的对象是服务端。
反向代理
配置语法
通过该代理,在通过代理访问
Syntax:proxy_pass URL;
Default:默认无
Context:location,if in location,limit_expect
URL写法
(1)HTTP,http://localhost:8000/uri/
(2)HTTPS,https://localhost:8000/uri/
(3)Socket的方式(Linux下进程间通信的方式),http://unix:/tmp/backend.socket:/uri/;
测试
在/etc/nginx/conf.d/
中配置如下两个配置文件:
realserver.conf
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
allow 127.0.0.1;
deny all;
root /opt/app/code2;
index index.html index.htm;
}
#.......
}
注:该文件配置了8080端口,并使用allow与deny配置成服务器私有访问(模拟服务器内网)。
fx_proxy.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location ~ /test_proxy.html$ {
proxy_pass http://127.0.0.1:8080;
}
#.......
}
注:该配置配置了公网的80端口,并对test_proxy.html
设置了代理访问内网8080端口。
效果
访问http://192.168.174.132:8080/test_proxy.html
,显示404找不到页面。
访问http://192.168.174.132/test_proxy.html
,默认是80端口,跳转到指定页面,但对于客户端来说,访问的链接(IP)还是80端口的,即对客户是透明的,所以反向代理是服务于服务器。
正向代理
配置语法
与反向代理一样。
测试
在/opt/app/code
,新建shen.html,用于测试。
在/etc/nginx/conf.d/
中配置如下两个配置文件:
admin.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
if ( $http_x_fowwarded_for !~* "^192\.168\.174\.132") {
return 403;
}
root /opt/app/code;
index index.html index.htm;
}
#...
}
注:132为Nginx的IP,此处筛选非本机访问均拒绝。
zx_proxy.conf
server {
listen 8081;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://$http_host$request_uri;
}
#....
}
注:此处配置正向代理,端口为8081,模拟代理服务器,访问的请求均通过代理服务器访问。
效果
宿主机IP192.168.174.1,直接访问http://192.168.174.132/shen.html
,显示403禁止访问。
宿主机,设置HTTP代理(192.168.174.132,端口8081),访问http://192.168.174.132/shen.html
成功。
即正向代理为客户端服务,对服务器透明。
代理配置语法补充
缓冲区
尽可能接收多的信息,再返回给客户端,减少IO操作。
Syntax:proxy_buffering on | off;
Default:proxy_buffering on;
Context:http,server,location
扩展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size
跳转重定向
Nginx作为代理服务器,返回301,重定向到另外一个地址,返回给客户端。默认即可。
Syntax:proxy_redirect default(默认);
proxy_redict off(关闭);proxy_redirect redirect replacement(对301地址修改);
Default:proxy_redirect default;
Context:http,server,location
头信息
代理访问时,设置的头信息(如,访问控制章节的remote_addr,服务器是获取不到客户端IP的,可通过头信息去一步一步设置,再获取)。
Syntax:proxy_set_header field value;
Default:proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context:http,server,location
扩展:proxy_hide_header、proxy_set_body
超时
作为代理,到后端的一个超时。
Syntax:proxy_connect_timeout time;
Default:proxy_connect_timeout 60s;
Context:http,server,location
扩展:proxy_read_timeout(已经建立连接,Nginx与后端交互,读超过time,则超时)、proxy_send_timeout(接收信息,发送给客户端的超时)
常用代理配置和规范
proxy_pass http://127.0.0.1:8080;(反向代理)
proxy_redirect default;(重定向,301,默认配置)
proxy_set_header Host $http_host;(头信息,HOST)
proxy_set_header X-Real-IP $remote_addr;(真实IP,remote_addr)
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;(优先内存)
proxy_max_temp_file_size 256k;(临时文件,内存置换)(--http-proxy-temp-path=/var/cache/nginx/proxy_temp)
配置太多且通用的情况,可以使用文件存放,如proxy_params,使用include filename;
进行包含。
内容总结
以上是互联网集市为您收集整理的Nginx学习笔记——场景实践之《代理服务》全部内容,希望文章能够帮你解决Nginx学习笔记——场景实践之《代理服务》所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。