开源Nginx可视化配置工具,快速搞定Nginx配置难题
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个Nginx界面配置工具——nginxWebUI。
nginxWebUI是一款图形化管理nginx配置的工具, 可以使用网页来快速配置nginx的各项功能, 包括http协议转发、tcp协议转发、反向代理、负载均衡、静态html服务器、ssl证书自动申请、续签、配置等,配置好后可一建生成nginxconf文件, 同时可控制nginx使用此文件进行启动与重载,完成对nginx的图形化控制闭环。
本项目是基于solon的web系统,数据库使用h2, 因此服务器上不需要安装任何数据库。
本系统通过Let's encrypt申请证书,使用acmesh脚本进行自动化申请和续签,开启续签的证书将在每天凌晨2点进行续签,只有超过60天的证书才会进行续签,只支持在linux下签发证书。
添加tcp/ip转发配置支持时, 一些低版本的nginx可能需要重新编译,通过添加–with-stream参数指定安装stream模块才能使用,但在ubuntu 1804下,官方软件库中的nginx已经带有stream模块,不需要重新编译。本系统如果配置了tcp转发项的话,会自动引入ngx_stream_moduleso的配置项,如果没有开启则不引入,最大限度优化ngnix配置文件。
打开 http://ip:8080 进入主页。
登录页面,第一次打开会要求初始化管理员账号。
进入系统后,可在管理员管理里面添加修改管理员账号。
在http参数配置中可以配置nginx的http项目,进行http转发,默认会给出几个常用配置,其他需要的配置可自由增删改查,可以勾选开启日志跟踪,生成日志文件。
在TCP参数配置中可以配置nginx的steam项目参数,进行tcp转发。
在反向代理中可配置nginx的反向代理即server项功能,可开启ssl功能,可以直接从网页上上传pem文件和key文件,或者使用系统内申请的证书,可以直接开启http转跳https功能,也可开启http2协议。
在负载均衡中可配置nginx的负载均衡即upstream项功能,在反向代理管理中可选择代理目标为配置好的负载均衡。
在证书管理中可添加证书,并进行签发和续签,开启定时续签后,系统会自动续签即将过期的证书。
备份文件管理,这里可以看到nginxcnf的备份 历史 版本,nginx出现错误时可以选择回滚到某一个 历史 版本。
最终生成conf文件,可在此进行进一步手动修改,确认修改无误后,可覆盖本机conf文件,并进行校验和重启,可以选择生成单一nginxconf文件还是按域名将各个配置文件分开放在confd下。
远程服务器管理,如果有多台nginx服务器,可以都部署上nginxWebUI,然后登录其中一台,在远程管理中添加其他服务器的ip和用户名密码,就可以在一台机器上管理所有的nginx服务器了。
提供一键同步功能,可以将某一台服务器的数据配置和证书文件同步到其他服务器中。
本系统提供http接口调用,只要开 http://xxxxxxxxxxxx:8080/dochtml 即可查看smat-doc接口页面。
接口调用需要在header中添加token,其中token的获取需要在管理员管理中,打开用户的接口调用权限,然后通过用户名密码调用获取token接口,才能得到token,然后在knife4j的文档管理中设置全局token。
jar安装说明:
以Ubuntu操作系统为例:
1 安装java运行环境和nginx
Ubuntu:
Centos:
Windows:
2 下载最新版发行包jar
有新版本只需要修改路径中的版本即可。
3 启动程序
docker安装说明
本项目制作了docker镜像,同时包含nginx和nginxWebUI在内,一体化管理与运行nginx。
1 安装docker容器环境
ubuntu:
centos:
2 下载镜像
3 启动容器
—END—
开源协议:MulanPSL-10
开源地址:https://githubcom/cym1102/nginxWebUI
| 这篇文章主要介绍了Nginx缓存设置案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下 |
在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在常用的缓存设置里面有两种方式,都是使用add_header来设置:分别为Cache-Control和Pragma。
对于站点中不经常修改的静态内容(如,JS,CSS),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。
以Nginx服务器为例:
背景:Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
相关资料
1、Cache-control策略
Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。
http协议头Cache-Control :
值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age
各个消息中的指令含义如下:
Last-Modified/If-Modified-Since
其最终达到的就是等效于设置这三类html缓存技术:
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
6、缓存控制字段cache-control的配置说明 ( https://wwwcnblogscom/kevingrace/p/10459429html )
HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。
请求时的缓存指令包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
响应消息中的指令包括: public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。
no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器
no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源)
private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问服务器
public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等
max-age: 相对过期时间, 即以秒为单位的缓存时间
no-cache, private: 打开新窗口时候重新访问服务器, 若设置max-age, 则缓存期间不访问服务器
设置以分钟为单位的绝对过期时间, 优先级比Cache-Control低, 同时设置Expires和Cache-Control则后者生效 也就是说要注意一点: Cache-Control的优先级高于Expires
expires起到控制页面缓存的作用,合理配置expires可以减少很多服务器的请求, expires的配置可以在http段中或者server段中或者location段中 比如控制等过期时间为30天
客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
"它代理的是客户端,代客户端发出请求",是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的用途:
(1)访问原来无法访问的资源,如Google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,"它代理的是服务端,代服务端接收请求",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
Nginx是lgor Sysoev为俄罗斯访问量第二的ramblerru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有1218%的使用比率,大约为2220万个网站。
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
Nginx常用功能。
1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案。
。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
最近需要在平台里面集成视频服务,所以决定用nginx来代理视频地址,在网上找来很多关于nginx配置mp4播放,结果都没发用(都不自己测一下就发的吗)。在一番摸索下弄好了,决定记一笔。
本次的nginx是在rancher里面操作的,不过用命令行去创建的话也是同理。
为了修改配置方便一点,我们决定给nginx添加一个configmap。主要是加了下图的两个配置(网上众说纷纭,挨着测试一圈一直都是错的下面是我测试好了的配置)
然后是服务的基本配置,这个没啥好说的,命名空间的话在刚刚添加配置映射的时候就创建好了。
然后我们添加数据卷,首先是映射配置,把我们刚刚创建的config引用进来
怎么用nginx在windows上搭建web服务器解决方法
所需工具:
一台联网的电脑
phpStudy 2014版
windows 2003 server sp2 服务器一台
1phpstudy安装在第四步时选择Nginx&php
或默认安装完成后切换Nginx,
2安装换成后打开phpStudy控制面板选择PHP版本
3打开phpStudy(24中组合 自由切换)选择Nginx+php你所需要的版本
4选择相应版本后点击应用等待自动切换,如防火墙弹出阻止框,选择允许访问如果没有请忽略
5完成后在控制面板可看到Nginx已经启动
Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。
Nginx代理服务的配置说明
1、上一篇中我们在http模块中有下面的配置,当代理遇到状态码为404时,我们把404页面导向百度。
然而这个配置,细心的朋友可以发现他并没有起作用。
如果我们想让他起作用,我们必须配合着下面的配置一起使用
2、如果我们的代理只允许接受get,post请求方法的一种
3、设置支持的http协议版本
4、如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。
如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。
5、如果使用upstream指令配置啦一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组服务器处理。
6、如果你想通过http获取客户的真是ip而不是获取代理服务器的ip地址,那么要做如下的设置。
关于X-Forwarded-For与X-Real-IP的一些相关文章我推荐一位博友的: HTTP 请求头中的 X-Forwarded-For ,这位博友对http协议有一系列的文章阐述,推荐大家去关注下。
7、下面是我的一个关于代理配置的配置文件部分,仅供参考。
上一篇中我说啦nginx有哪些中负载均衡算法。这一结我就给如果操作配置的给大家做详细说明下。
首先给大家说下upstream这个配置的,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法。这里的被代理服务器地址有2中写法。
然后,就来点实战的东西。
1、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB
upstream mysvr { server 127001:7878; server 19216810121:3333 backup; #热备 }
2、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB
upstream mysvr { server 127001:7878; server 19216810121:3333; }
3、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB
upstream mysvr { server 127001:7878 weight=1; server 19216810121:3333 weight=2;}
4、ip_hash:nginx会让相同的客户端ip请求相同的服务器。
upstream mysvr { server 127001:7878; server 19216810121:3333; ip_hash; }
5、如果你对上面4种均衡算法不是很理解,那么麻烦您去看下我上一篇配的,可能会更加容易理解点。
到这里你是不是感觉nginx的负载均衡配置特别简单与强大,那么还没完,咱们继续哈,这里扯下蛋。
关于nginx负载均衡配置的几个状态参数讲解。
down,表示当前的server暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻 。
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
到这里应该可以说nginx的内置负载均衡算法已经没有货啦。如果你像跟多更深入的了解nginx的负载均衡算法,nginx官方提供一些插件大家可以了解下。
0条评论