Nginx高级配置

合集下载

nginx配置详解

nginx配置详解

nginx配置详解⾼性能的http服务代理服务器和反向代理服务器,能⽀持50000个并发连接数正向代理明确买家是谁,让代理⼈去联系⽬标例如局域⽹内的客户端想要访问局域⽹外的internet,则需要代理服务器来访问,这种代理就是正向代理反向代理客户端不需要任何配置就可以访问,只需要将请求发送到代理服务器,有代理服务器去选择⽬标服务器在返回给客户端负载均衡将请求分发到不同服务器、负载分发到不同服务器,就是负载均衡访问⼀个ip 默认是80 (nginx) tomcat 是8080动静分离为了加快⽹站的解析速度、将动态和静态页⾯有不同服务器来解析,降低原来单个服务器的压⼒安装进⼊压缩⽬录执⾏./configure执⾏make && make install (编译安装)安装完成后多⼀个local/nginx 在nginx有sbin 启动脚本./nginx访问: ->welcome to nginx查看开放的端⼝:firewall-cmd –list-all添加端⼝:Firewall-cmd –add-service=http -permanentSudo firewall-cmd –add-port=80/tcp –permanent重启防⽕墙:firewall-cmd -reloadNginx 相关命令:1 进⼊到nginx的⽬录 /usr/local/nginx/sbin2 查看nginx的版本号:./nginx -v3 启动nginx ./nginx4 关闭nginx ./nginx -s stop5 重加载 ./nginx -s reload (重新加载配置⽂件 nginx.conf)Nginx的配置⽂件组成第⼀块:全局块从配置⽂件开始到events块之间的内容、主要设置⼀些影响nginx服务器运⾏的配置指令,⽐如 worker_process 1; 值越⼤,可以⽀持的并发量也越多第⼆部分:events涉及的指令主要影响nginx服务器与⽤户的⽹络连接数⽐如 worker connections 1024 ⽀持的最⼤连接数第三部分:http块(配置最多的地⽅)http全局块server块举例:浏览器访问Nginx.conf 配置如下图:proxy_pass 反向代理的地址例如:要实现http://127.0.0.1:9091/edu 访问tomcatl1 (127.0.0.1:8080)http://127.0.0.1:8080/vod 访问tomcatl2 (127.0.0.1:8081)注意:开放端⼝ 9091 8081 8080 (firewall)在 /usr/src/tomcat-xx/apache-tomcat-xx/webapps/ 创建 edu⽬录然后放⼀个a.html⽂件这时访问就能看到这是nginx.conf ⾥要改的内容~ /edu/ #正则表达式,请求路径包含 edu时就会转发到 xxx:8080关于location的说明:负载均衡:访问http://192.168.17.129/edu/a.htmlUpstream myserver{Server 192.168.17.129:8080;Server 192.168.17.129:8081;}策略:轮询(默认)、权重、ip_hash、fair(第三⽅)轮询:服务器如果down掉,⾃动剔除权重:weight 权重越⾼,分配的客户端越多Upstream myserver{Server xxx weight=1;Server xxx weight=10;}Ip_hash:每个访客固定⼀个后端服务器、可以解决session问题Upstream myserver{Ip_hash;Server xxx;Server xxx;}Fair:按后端服务器响应时间来分配请求、响应时间断的优先分配Upstream myserverr{Server xxxx;Server xxxx;Fair;}动静分离:Nginx处理静态页⾯、tomcat处理动态页⾯:⼀:把静态⽂件独⽴成单独的域名放在独⽴的服务器上另⼀种就是动态和静态⽂件混合⼀起发布,通过nginx来分开,通过location指定不同的后缀名实现不同的转发请求、通过expires 参数设置可以使浏览器缓存过期时间,减少与服务器之间的请求和流量;设定⼀个过期时间,也就是⽆需去后端服务验证,直接通过浏览器确认是否过期即可,不会残⽣额外的流量/data/image/01.jpg/data/www/a.htmlAutoinde on; // 列出返回⽬录最终测试:http://192.168.17.129/image/01.jpghttp://192.168.17.129/www/a.html⾼可⽤集群需要两台服务器 192.168.17.129 192.168.17.131 (nginx)这两台都要安装nignx、keepalivedYum -y install keepalived安装好之后修改/etc/keepalived/keepalived.conf ⽂件分别启动nignx和keepalived./nginx systemctl start keepalived.service补充:关闭nginx服务1 kill `cat /usr/local/nginx/logs/nginx.pid` //⽂件中有个pid号2 nginx -s reload //重载Session共享:⽆论登录那⼀台ip,session是⼀致的1 内存数据库(memcache)1 修改服务器和数据库的关联关系。

nginx 响应参数

nginx 响应参数

nginx 响应参数【1.Nginx 响应头概述】ginx 是一款高性能的反向代理服务器,广泛应用于Web 服务器和应用服务器。

在Nginx 处理请求时,响应头(Response Headers)是响应的重要组成部分,它包含了服务器传递给客户端的信息和设置。

恰当使用响应头参数,可以有效提升网站性能、保护服务器资源和提升用户体验。

【2.Nginx 响应头常用参数介绍】1.Content-Type:设置响应内容的类型,如text/html、application/json 等。

2.Content-Length:设置响应内容的长度,便于客户端提前知道数据大小,如:Content-Length: 1234。

st-Modified:设置文件最后修改时间,用于缓存控制,如:Last-Modified: Wed, 1 Jan 2000 00:00:00 GMT。

4.ETag:设置资源版本,与If-None-Match 共同实现缓存控制。

5.Cache-Control:设置缓存控制策略,如:Cache-Control: no-cache, no-store, must-revalidate。

6.Expires:设置响应过期的日期和时间,如:Expires: Wed, 1 Jan 2000 00:00:00 GMT。

7.Server:设置服务器类型和版本,如:Server: nginx/1.21.0。

8.Connection:设置客户端与服务器之间的连接参数,如:Connection: keep-alive。

9.Keep-Alive:设置长连接是否开启,如:Keep-Alive: on。

10.Transfer-Encoding:设置传输编码,如:Transfer-Encoding: chunked。

【3.响应头参数的应用场景及示例】1.设置内容类型:当客户端请求的资源为HTML 页面时,响应头Content-Type 设置为text/html,以确保浏览器正确渲染页面。

Nginx配置详解

Nginx配置详解

Nginx配置详解序言Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。

从2004年发布至今,凭借开源的力量,已经接近成熟与完善。

Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。

支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。

并且支持很多第三方的模块扩展。

Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

牛逼吹的差不多啦,如果你还不过瘾,你可以百度百科或者一些书上找到这样的夸耀,比比皆是。

Nginx常用功能1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料。

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。

Nginx 可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。

并且Nginx对返回结果进行错误页跳转,异常判断等。

如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

2、负载均衡Nginx提供的负载均衡策略有2种:内置策略和扩展策略。

内置策略为轮询,加权轮询,Ip hash。

扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

上3个图,理解这三种负载均衡算法的实现Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

3、web缓存Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。

nginx详细配置

nginx详细配置

nginx详细配置Nginx内容概览1、nginx简介(1)介绍 nginx的应⽤场景和具体可以做什么事情(2)介绍什么是反向代理(3)介绍什么是负载均衡(4)介绍什么是动静分离2、nginx安装(1)介绍 nginx在 linux系统中如何进⾏安装3、nginx常⽤的命令和配置⽂件(1)介绍 nginx启动、关闭、重新加载命令(2)介绍 nginx的配置⽂件4、nginx配置实例-反向代理5、nginx配置实例-负载均衡6、nginx配置实例-动静分离7、nginx原理与优化参数配置8、搭建 nginx⾼可⽤集群(1)搭建 nginx⾼可⽤集群(主从模式)(2)搭建 nginx⾼可⽤集群(双主模式)第 1 章 Nginx 简介1.1 Nginx 概述Nginx ("engine x") 是⼀个⾼性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能⼒强,事实上 nginx的并发能⼒确实在同类型的⽹页服务器中表现较好,中国⼤陆使⽤ nginx⽹站⽤户有:百度、京东、新浪、⽹易、腾讯、淘宝等1.2 Nginx 作为 web 服务器Nginx 可以作为静态页⾯的 web 服务器,同时还⽀持 CGI 协议的动态语⾔,⽐如 perl、php等。

但是不⽀持 java。

Java程序只能通过与tomcat配合完成。

Nginx专为性能优化⽽开发,性能是其最重要的考量,实现上⾮常注重效率,能经受⾼负载的考验,有报告表明能⽀持⾼达50,000个并发连接数。

1.3 正向代理Nginx 不仅可以做反向代理,实现负载均衡。

还能⽤作正向代理来进⾏上⽹等功能。

正向代理:如果把局域⽹外的 Internet 想象成⼀个巨⼤的资源库,则局域⽹中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

1.4 反向代理反向代理,其实客户端对代理是⽆感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择⽬标服务器获取数据后,在返回给客户端,此时反向代理服务器和⽬标服务器对外就是⼀个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP地址。

nginxlocation配置详细解释

nginxlocation配置详细解释

nginxlocation配置详细解释-------------------- 写在这是⽅便⼤家找的安装配置三部曲:点击即可查看---------------------server_name _; #不启⽤域名指令-热启动Nginx重新读取配置的命令nginx -s reload看⽂档的⽅法gzip压缩⽂件模块的使⽤:参考:nginx官⽅⽂档-》Modules reference-》语法详解语法规则:location [=|~|~*|^~] /uri/ { … }=开头表⽰精确匹配^~开头表⽰uri以某个常规字符串开头,理解为匹配 url路径即可。

nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

以xx 开头~开头表⽰区分⼤⼩写的正则匹配以xx结尾~*开头表⽰不区分⼤⼩写的正则匹配以xx结尾!~和!~*分别为区分⼤⼩写不匹配及不区分⼤⼩写不匹配的正则/通⽤匹配,任何请求都会匹配到。

多个location配置的情况下匹配顺序为(参考资料⽽来,还未实际验证,试试就知道了,不必拘泥,仅供参考):⾸先精确匹配 =-》其次以xx开头匹配^~-》然后是按⽂件中顺序的正则匹配-》最后是交给 / 通⽤匹配。

当有匹配成功时候,停⽌匹配,按当前匹配规则处理请求。

例⼦,有如下匹配规则:location = / {#规则A}location = /login {#规则B}location ^~ /static/ {#规则C}location ~ \.(gif|jpg|png|js|css)$ {#规则D,注意:是根据括号内的⼤⼩写进⾏匹配。

括号内全是⼩写,只匹配⼩写}location ~* \.png$ {#规则E}location !~ \.xhtml$ {#规则F}location !~* \.xhtml$ {#规则G}location / {#规则H}那么产⽣的效果如下:访问根⽬录/,⽐如http://localhost/ 将匹配规则A访问 http://localhost/login将匹配规则B,http://localhost/register 则匹配规则H访问 http://localhost/static/a.html 将匹配规则C访问 http://localhost/a.gif, http://localhost/b.jpg将匹配规则D和规则E,但是规则D顺序优先,规则E不起作⽤,⽽ http://localhost/static/c.png 则优先匹配到规则C访问 http://localhost/a.PNG则匹配规则E,⽽不会匹配规则D,因为规则E不区分⼤⼩写。

Nginx之upstream的四种配置方式

Nginx之upstream的四种配置方式

Nginx之upstream的四种配置⽅式1、轮询(weight) 指定轮询⼏率,weight和访问⽐率成正⽐,⽤于后端服务器性能不均的情况。

默认当weight不指定时,各服务器weight相同,每个请求按时间顺序逐⼀分配到不同的后端服务器,如果后端服务器down掉,能⾃动剔除。

upstream bakend {server 192.168.1.10 weight=1;server 192.168.1.11 weight=2;}2、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问⼀个后端服务器,可以解决session不能跨服务器的问题。

如果后端服务器down掉,要⼿⼯down掉。

upstream resinserver{ip_hash;server 192.168.1.10:8080;server 192.168.1.11:8080;}3、fair(第三⽅插件) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream resinserver{server 192.168.1.10:8080;server 192.168.1.11:8080;fair;}4、url_hash(第三⽅插件) 按访问url的hash结果来分配请求,使每个url定向到同⼀个后端服务器,后端服务器为缓存服务器时⽐较有效。

在upstream中加⼊hash语句,hash_method是使⽤的hash算法。

upstream resinserver{server 192.168.1.10:8080;server 192.168.1.11:8080;hash $request_uri;hash_method crc32;}设备的状态有:(1)down:表⽰单前的server暂时不参与负载(2)weight:权重,默认为1, weight越⼤,负载的权重就越⼤。

(3)max_fails:允许请求失败的次数默认为1。

NginxWebUI--强大的nginx可视化配置工具

NginxWebUI--强大的nginx可视化配置工具

NginxWebUI--强大的nginx可视化配置工具前言本文介绍一下NginxWebUI,通过这款工具我们可以轻松的以图形化方式来配置我们的Nginx的各项功能,包括HTTP协议转发,TCP协议转发,反向代理,负载均衡,SSL证书自动申请、续期。

NginxWebUI可以部署在Ubuntu、CentOS、Windows等各个平台,可以通过本地部署或者通过Docker镜像来部署,其中Docker部署是最为简单的,只需要拉取镜像、创建并启动容器,接下来将演示如何使用Docker来部署NginxWebUI。

官网环境系统:CentOS 7 Docker:20.10.11拉取镜像docker pull cym1102/nginxwebui:latest在这里插入图片描述创建并启动容器大家可以根据自己的习惯来自定义nginxWebUI容器与宿主机的映射目录这段创建容器命令使用了--net=host,直接映射本机端口, 因为内部nginx可能使用任意一个端口, 所以必须映射本机所有端口.docker run -d -v /mydata/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--s erver.port=8080" --privileged=true --net=host cym1102/nginxwebui:latest但是本人一般只用得到80端口和443端口,而nginxWebUI也要用到8080端口,这里我以端口映射的方式来监听:-p 80:80 -p 443:443 -p 8080:8080自定义端口映射就会有局限性,在配置中你如果代理到其它端口就无法监听到了,所以如果你想端口随意监听请用上面那条命令,如果和我一样只用得到80和443那就请用下面这条命令docker run -itd -v /mydata/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --privileged=true -p 80:80 -p 443:443 -p 8080:8080 cym1102/ng inxwebui:latest /bin/bashimage注意:•容器需要映射路径/mydata/nginxWebUI:/home/nginxWebUI, 此路径下存放项目所有数据文件, 包括数据库, nginx配置文件, 日志, 证书等, 升级镜像时,此目录可保证项目数据不丢失. 请注意备份.•-e BOOT_OPTIONS 参数可填充java启动参数, 可以靠此项参数修改端口号, "--server.port 占用端口", 不填默认以8080端口启动•日志默认存放在/mydata/nginxWebUI/log/nginxWebUI.log查看容器docker psimage容器正常启动image访问后台管理由于创建容器的时候我的容器端口参数--server.port=8080设置的为8080,所以我们就要使用服务器IP+8080端口就可以访问到后台。

Nginx如何配置Http、Https、WS、WSS的方法步骤

Nginx如何配置Http、Https、WS、WSS的方法步骤

Nginx如何配置Http、Https、WS、WSS的⽅法步骤写在前⾯当今互联⽹领域,Nginx是使⽤最多的代理服务器之⼀,很多⼤⼚在⾃⼰的业务系统中都是⽤了Nginx作为代理服务器。

所以,我们有必要了解下Nginx对于Http、Https、WS、WSS的各项配置。

来来来,跟冰河⼀些学习Nginx,⼀起进阶,⼀起头秃~~Nginx配置Http⾸先,我们来聊聊Nginx如何配置Http,Nginx配置Http是Nginx最常⽤的功能之⼀。

在nginx.conf中配置相应的信息,如下所⽰。

upstream message {server localhost:8080 max_fails=3;}server {listen 80;server_name localhost;location / {root html;index index.html index.htm;#允许cros跨域访问add_header 'Access-Control-Allow-Origin' '*';#proxy_redirect default;#跟代理服务器连接的超时时间,必须留意这个time out时间不能超过75秒,当⼀台服务器当掉时,过10秒转发到另外⼀台服务器。

proxy_connect_timeout 10;}location /message {proxy_pass http://message;proxy_set_header Host $host:$server_port;}}Nginx配置Https如果业务对于⽹站的安全性要求⽐较⾼,此时可能就会在Nginx配置Https,具体配置信息可以参照如下⽅式进⾏。

upstream message {server localhost:8080 max_fails=3;}server {listen 443 ssl;server_name localhost;ssl_certificate /usr/local/nginx-1.17.8/conf/keys/binghe.pem;ssl_certificate_key /usr/local/nginx-1.17.8/conf/keys/binghe.key;ssl_session_timeout 20m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_verify_client off;location / {root html;index index.html index.htm;#允许cros跨域访问add_header 'Access-Control-Allow-Origin' '*';#跟代理服务器连接的超时时间,必须留意这个time out时间不能超过75秒,当⼀台服务器当掉时,过10秒转发到另外⼀台服务器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nginx高级配置
1. Nginx连接后端的方式:反向代理(proxy_pass)、直连
fastcgi(fastcgi_pass)
例子:
fastcgi_pass backend1;
proxy_pass http://backend2;
location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。

注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。

2. Nginx调度与负载均衡配置(upstream 配置)
1) 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器。

weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认值为1。

例如:
upstreambakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
2) ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

例如:
upstreambakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
3) hash 每个请求按访问$hash_seed的hash结果分配。

例如:
upstreambakend {
hash $hash_seed;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
4) fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配,需要第三方插件。

upstream backend {
server 192.168.0.14:88;
server 192.168.0.15:80;
fair;
}
5) url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server 语句中不能写入weight等其他的参数,hash_method是使用的hash算法 upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
3. upstream配置参数
例子:
upstreambakend{
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060 max_fails=1 fail_timeout=10s;
server 127.0.0.1:7070 backup;
}
proxy_pass http://bakend/;或fastcgi_pass backend; 为每个设备的状态设置为:
1) down 表示单前的server暂时不参与负载,一般用于标记故障机。

2) weight 默认为1.weight越大,负载的权重就越大。

3) max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回
proxy_next_upstream模块定义的错误
4) fail_timeout:max_fails次失败后,暂停改服务的时间,超过时间后继续向该服务发送流量,默认为10s。

5) backup:备用服务器,其它所有的非backup机器down或者忙的时候,启用backup机器。

4.容错机制
1) Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;
2) 除非添加了fastcgi_next_upstream 或proxy_next_upstream 指令设置对404、502、503、504、500和time out 等错误进行转到备机处理;
3) 在next_upstream 过程中,会对fails 进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录)
综述,nginx 记录错误数量timeout 和connect refuse 是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream 或fastcgi_next_upstream 后nginx 才会记录这4种HTTP 错误到fails 中,当fails 大于等于max_fails 时,则该节点失效;
注意:
fastcgi_next_upstream 与proxy_next_upstream 支持的错误并不一致: fastcgi_next_upstream :
error | timeout | invalid_header | http_500 |
http_503 | http_403 | http_404 | off
proxy_next_upstream :
error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_403 | http_404 | off ...
当fastcgi 的服务异常时,因为fastcgi_next_upstream 不支持http_502错误,无法对fastcgi 异常进行判断,
所以fastcgi_pass 与proxy_pass 处理的规则也不相同:。

相关文档
最新文档