论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
大数据
›
数据仓库与分析
›
Nginx的正向与反向代理
Nginx的正向与反向代理
张裕
金牌会员
|
2024-10-16 03:20:49
|
显示全部楼层
|
阅读模式
楼主
主题
577
|
帖子
577
|
积分
1731
一、Nginx简介
1. 什么是Nginx
Nginx(发音为“engine-x”)是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。Nginx是由俄罗斯的Igor Sysoev(伊戈尔·赛索耶夫)为解决C10k问题(即同时处理超过10000个客户端毗连)而开发的。它以高性能、稳定性、功能丰富和低资源斲丧而闻名。它第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。
2. Nginx优点
1)
高性能
:Nginx能够处理大量的并发毗连,且内存斲丧相对较低。
2)
高稳定性
:Nginx以其稳定性而著称,极少出现崩溃的环境。
3)
模块化
:Nginx支持模块化设计,可以根据须要加载或卸载特定的模块。
4)
配置简单
:Nginx的配置文件简便明了,易于理解和维护。
5)
跨平台
:Nginx可以在多种利用系统上运行,包括Linux、BSD、Mac OS和Windows。
二、正向代理
正向代理
(代理客户端),例子:VPN、游戏加速器、公司网络
正向代理通常用于客户端,在客户端配置代理服务器进行指定网站访问,由代理服务器转发请求,返回给客户端,好比国内无法访问谷歌,这个时间我们就可以设置正向代理来访问
正向代理紧张作用
:
1)
访问控制
:代理服务器可以控制客户端可以访问哪些网站或服务。
2)
缓存
:代理服务器可以缓存请求的效果,提高访问速度。
3)
隐私保护
:代理服务器可以隐藏客户端的真实IP地点,提供一定水平的匿名性。
4)
过滤
:代理服务器可以过滤请求和响应,比方屏蔽广告或不得当的内容。
Nginx在正向代理中的配置示例:
...
server {
resolver 8.8.8.8;#指定DNS服务器IP地址
listen 80;#监听80端口
server_name localhost;
# 正向代理转发http请求
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header HOST $host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
proxy_send_timeout 30;
proxy_read_timeout 60;
}
}
...
复制代码
注意:nginx官方并不支持直接转发https请求,nginx支持https须要ngx_http_proxy_connect_module模块
三、反向代理
反向代理
(代理服务端),例子:访问百度网址
反向代理是服务端,客户端不须要知道目标服务器的地点,反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地点,隐藏了真实服务器的IP地点
反向代理的紧张作用
:
1)
负载均衡
:反向代理可以将请求通过负载均衡算法分发到多个后端服务器,均衡负载。
2)
缓存
:反向代理可以缓存静态内容,减轻后端服务器的负担。
3)
SSL加密
:反向代理可以管理SSL/TLS加密和证书,简化后端服务器的配置。
4)
压缩
:反向代理可以对响应进行压缩,提高传输效率。
5)
安全
:反向代理可以作为额外的安全层,隐藏目标服务器的身份,从而保证内网安全。
Nginx在反向代理中的应用配置示例:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
复制代码
proxy_pass http://127.0.0.1:8080; 将所有请求转发到本地的8080端口。
proxy_set_header 指令用于确保后端服务器收到正确的客户端请求信息。
附:Nginx配置文件说明
nginx的配置文件结构如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
复制代码
通常包含以下几部分:
全局块
├── events
├── http
│ ├── upstream
│ ├── server
│ ├── server
│ │ ├── location
│ │ ├── location
│ │ └── ...
│ └── ...
└── ...
复制代码
全局块:
全局配置,影响nginx的团体举动,比方定义运行nginx进程的用户(组)、允许打开的文件数、日志文件位置等。好比:
# 全局块
user nginx;
# Nginx 进程的数量
worker_processes 1;
# 定义 PID 文件位置
pid /var/run/nginx.pid;
# 定义错误日志文件位置
error_log /var/log/nginx/error.log warn;
# 定义访问日志文件位置
access_log /var/log/nginx/access.log main;
复制代码
events块:
配置与客户端毗连的相关参数,如工作毗连数、事件处理机制等。
# events 块
events {
worker_connections 1024;
}
复制代码
http块:
定义了所有http服务器的配置指令,包括文件引用、日志定义、http头部信息、MIME-TYPE定义、SSL配置、客户端请求头处理等。
# http 块
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 定义日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 定义访问日志
access_log /var/log/nginx/access.log main;
# 定义 sendfile
sendfile on;
# 定义 keepalive 超时时间
keepalive_timeout 65;
# 包含其他配置文件
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
# server 块
server {
listen 80;
server_name localhost;
# 定义 location 块
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 定义 error_page
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 定义 upstream 块
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
# 定义 map 块
map $http_host $backend_pool {
backend1.example.com backend1;
backend2.example.com backend2;
default backend1;
}
# 使用 upstream
location /backend {
proxy_pass http://$backend_pool;
}
}
}
复制代码
server块:
http 块可以包含多个 server 块,每个 server 块定义了一个虚拟主机。server块定义了服务器级别的配置指令,可以有多个server块,每个块定义了一个虚拟主机。server块可以继承http块的配置。server 块中的配置对特定的虚拟主机有效。server 块可以包含多个 location 块。
location块:
定义了请求的路由和处理方式,用于匹配请求的URI,并定义如那边理匹配的请求
upsteam块:
定义了一组后端服务器,用于负载均衡。upstream块中的配置对特定后端服务器有效。
map块:
可以基于某些请求设置变量的值,map块中的配置对整个nginx服务有效。
include指令:
用于包含其他配置文件。include指令可以出如今全局块、http块或server块中,用于引入其他配置文件。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
张裕
金牌会员
这个人很懒什么都没写!
楼主热帖
linux企业版火绒(火绒终端安全管理体 ...
ESP32 IDF开发 应用篇⑭ Wifi TCP客户 ...
复杂度(上卷)
AI绘画Stable Diffusion Lora模子的利 ...
LLaMa系列模子详解(原理介绍、代码解 ...
jenkins自动化部署(node服务器) ...
什么时候用C而不消C++?
Linux安装最新版Docker完整教程(建议 ...
049-WEB攻防-文件上传&存储安全&OSS对 ...
微信云小程序快速上手云数据库+云函数+ ...
标签云
存储
服务器
浏览过的版块
.Net
快速回复
返回顶部
返回列表