Nginx服务器配置
来源:互联网 发布:淘宝联盟手机版如何赚钱 编辑:程序博客网 时间:2024/06/05 20:01
nginx.conf配置文件
Nginx配置文件主要分成四部分:main(全局配置)、server(主机配置)、upstream(上游服务器配置,主要为反向代理、负载均衡相关配置)和location(URL匹配特定位置后的配置),每部分包含若干个指令。
1) main部分设置的指令将影响其它所有部分的设置;
2) server部分的指令主要用于指定虚拟主机域名、IP和端口;
3) upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;
4) location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。
公司项目网络请求通过Nginx的访问顺序:
1)Nginx启动后,默认监听80端口;
2)根据正则表达式拦截项目里的所有网络请求(Location匹配)。
3)通过proxy_pass找到要访问的上游服务器地址进行访问(upstream配置)。
upstream配置(上游服务器配置)
Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。
upstream节点
1. 在http节点下,添加upstream节点。
upstream linuxidc {
server 10.0.6.108:7080;
server 10.0.0.85:8980;
}
2. 将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称,即“http://linuxidc”.
location / {
root html;
index index.html index.htm;
proxy_pass http://linuxidc;
}
upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除(对应的服务器)。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。
upstream还有其它的分配策略:
1) weight(权重) 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。
upstream linuxidc{
server 10.0.0.77 weight=5;
server 10.0.0.88 weight=10;
}
2) ip_hash(访问ip)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream favresin{
ip_hash;
server 10.0.0.10:8080;
server 10.0.0.11:8080;
}
3) fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。
upstream favresin{
server 10.0.0.10:8080;
server 10.0.0.11:8080;
fair;
}
Nginx的基本配置
1、Nginx配置文件
Nginx服务器自带的配置文件:conf文件夹------>nginx.conf
Nginx的安装目录:/usr/local/nginx-1.12.1/conf/进去查看配置文件。
进入conf文件夹:cd conf(查看自带的配置文件的内容)
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下。
编辑文件,使用vi nginx.config
配置文件的基本格式:
worker_processes 1;
events {
worker_connections 1024;
}
http{
//http里面可以有多个server的配置。
server{}
server{ }
}
2、Nginx虚拟主机的配置
为了是每个服务器可以共更多用户访问,可以将一个服务器分为很多虚拟的子服务器,每个子服务器是相互独立的;这些子服务器是根据虚拟化技术分离出来的,这样一台服务器就可以虚拟成很多子服务器,我们把子服务器叫做虚拟主机。我们搭建好Nginx服务器之后,此时只要一台Nginx服务器,这时如果我们对这台服务器进行虚拟主机配置,就可以将一个Nginx服务器分割成多台对的子服务器。
1)配置虚拟主机需要哪些步骤
Nginx中配置虚拟主机有两步:配置IP地址;绑定ip地址与虚拟主机。
2)IP地址的配置
ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,可以看到当前主机的ip地址。
SU:( Switch user切换用户),可让一个普通用户切换为超级用户或其他用户,并可临时拥有所切换用户的权限,切换时需输入欲切换用户的密码;进入root模式。
访问ip地址的时候,自动转向虚拟主机;让ip地址与虚拟主机进行绑定。
加载配置文件:在别的配置文件中进行配置,然后加载。
如何创建新的空白文件touch xnzj.conf
vi xnzj.conf :编辑虚拟主机这个文件
访问IP地址的时候,进行跳转到默认的目录。监听某个ip地址。
这台虚拟主机的日子文件放在哪里。
3)Nginx虚拟主机的配置
3、Nginx日志文件配置
1)Nginx日志文件格式的配置
Nginx服务器在运行的时候,会有各种操作;这些关键的操作信息会记录到文件中,这些文件叫做日志文件。日志文件的记录是有格式的,我们可以按照系统默认的格式去记录,也可以按照我们自定义的格式去记录。我们可以使用log_format指令来设置Nginx服务器的日志文件的记录格式。日志文件的信息是如何排列的。
2)Nginx日志文件存储路径的配置
日志文件在记录的时候,需要存储到磁盘上,存储的路径是可以配置的。我们通过
access_log指令来配置Nginx的日志文件的存储路径。
Nginx的安装目录
access_log logs/access.log main;
不记录access_log方法:access_log off
3)Nginx日志文件的切割(定期对Nginx文件进行切割,按照天对日志文件进行切割)
为了使Nginx的日志文件存储更合理、有序、我们需要将日志文件进行分开存储;比如我们可以按照时间来分开,今天的日志文件存储到一个文件中,明天的日志文件存储到一个另一个新的文件夹中,这时候就用到日志文件的切割操作。
4、Nginx缓存配置
1)当我们在浏览器中浏览某网页时,我们会把该网页上的一些信息存储到本地,当我们第二次浏览该网页的时候,这个网页上的某些信息就可以从本地加载,这样速度就会快很多。存储到本地的这些信息,我们称为缓存;但是缓存文件过多的时候,缓存文件会非常大,影响我们正常的上网活动,故而缓存需要定期清理。
用户访问的只是某一个虚拟主机。
2)压缩功能配置:通过gzip压缩技术,可以使原来的网页内容大小压缩成原来的30%,这样用户在访问网页的时候,由于传输的内容比原来内容小,所以访问速度就会快很多。
服务器软件与服务器硬件配合,才能形成一个完整的服务器,而Nginx就是一个服务器软件。
服务器硬件---->操作系统---->服务器软件---->应用程序。
将应用程序放在Nginx服务器上,然后发布应用,让其他人进行访问。
Nginx一个高性能的跨平台服务器,支持高并发;Apache服务器并不支持高并发。Nginx支持多种操作系统.
Nginx的功能:
Nginx时一个高性能的HTTP和反向代理服务器,同时也是一个邮件代理服务器(发布应用程序,实现负载均衡,作为邮件服务器实现邮件收发)。
负载均衡:有海量用户访问服务器时,为了减少服务器压力,需要将用户引入各服务器,分担服务器的压力。好处是:加快响应速度;降低服务器崩溃的几率。
反向代理服务器(负载均衡服务器)---->应用服务器集群
Nginx服务器并不处理用户的请求,只是进行请求分发,将请求分发到应用服务器中进行处理。
Nginx的优点:实现高并发;内存消耗少;部署简单;成本低。
location是Nginx配置中的一个指令,用于URL匹配.在这个location中,所配置的每个指令将会启动不同的上游服务器去完成相应的工作.
负载均衡模块用于从”upstream”指令定义的后端主机列表中选取一台主机。nginx先使用负载均衡模块找到一台主机,再使用upstream模块实现与这台主机的交互.
Nginx的默认端口为80,可以不写,http://localhost/ 直接通过localhost进行访问,进入index.html(Nginx的欢迎页面)。
双击启动Nginx服务器,直接在浏览器中进行访问:http://localhost/
适合Nginx的操作系统是Linux。
修改Nginx配置文件后,要重新启动Nginx才行。
在 Linux 系统下搭建Nginx服务器,使用免安装版的软件。
Tomcat的默认端口为8080。
#低权限的用户,可以大大提高系统的安全性。#user nobody; #工作衍生进程数 代表cpu的核数是1个 cpu的核数和硬件有关系。worker_processes 1; #设置错误文件存放的路径;nginx服务器出现了错误,会记录到日志文件中。#可以取消注释,错误信息,注意信息error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#设置pid存放的路径:pid是系统控制中重要的文件(主要用于对nginx服务器进行控制)。#nginx的控制文件;去掉井号,代码就会生效。pid logs/nginx.pid; #设置最大连接数,支持1024个连接数events { use epoll; worker_connections 2048;} #http协议,和网页相关的内容,http里面包含多个server。http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip压缩功能设置 #开启gzip压缩,对用户访问的网页,是否进行压缩处理。文件缩小,传输速度快。 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; #http_proxy 设置 client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 75; proxy_send_timeout 75; proxy_read_timeout 75; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2; # 设定负载均衡后台服务器列表 upstream backend { #ip_hash; server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ; server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ; } #很重要的虚拟主机配置 server {#对某个端口进行监听 listen 80; server_name itoatest.example.com; root /apps/oaapp; charset utf-8; access_log logs/host.access.log main; #对 / 所有做负载均衡+反向代理 location / { root /apps/oaapp; index index.jsp index.html index.htm; proxy_pass http://backend; proxy_redirect off; # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP 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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } #静态文件,nginx自己处理,不去backend请求tomcat location ~* /download/ { root /apps/oa/fs; } location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /apps/oaapp; expires 7d; } location /nginx_status { stub_status on; access_log off; allow 192.168.10.0/24; deny all; } location ~ ^/(WEB-INF)/ { deny all; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ## 其它虚拟主机,server 指令开始}
main全局配置
woker_processes 2
在配置文件的顶级main部分,worker角色的工作进程的个数,master进程是接收并分配请求给worker处理。这个数值简单一点可以设置为cpu的核数grep ^processor /proc/cpuinfo | wc -l,也是 auto值,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作。如果nginx服务器还有其它服务,可以考虑适当减少。
worker_cpu_affinity
也是写在main部分。在高并发情况下,通过设置cpu粘性来降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。
worker_connections 2048
写在events部分。每一个worker进程能并发处理(发起)的最大连接数(包含与客户端或后端被代理服务器间等所有连接数)。nginx作为反向代理服务器,计算公式 最大连接数 = worker_processes * worker_connections/4,所以这里客户端最大连接数是1024,这个可以增到到8192都没关系,看情况而定,但不能超过后面的worker_rlimit_nofile。当nginx作为http服务器时,计算公式里面是除以2。
use epoll
写在events部分。在Linux操作系统下,nginx默认使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。
http服务器
sendfile on开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
keepalive_timeout 65 : 长连接超时时间,单位是秒,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置等。长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完成会导致失败。如果设置时间过长,用户又多,长时间保持连接会占用大量资源(每个用户都要保持长连接)。
send_timeout : 用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
代理模块
这个模块实现的是nginx作为反向代理服务器的功能
client_max_body_size 10m允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值.
proxy_connect_timeout 60 nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 60连接成功后,与后端服务器两个成功的响应操作之间超时时间(代理接收超时)
压缩模块 http_gzip
gzip on : 开启gzip压缩输出,减少网络传输。
gzip_min_length 1k:设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是20。建议设置成大于1k的字节数,小于1k可能会越压越大。
gzip_http_version 1.0 : 用于识别 http协议的版本,早期的浏览器不支持 Gzip压缩,用户就会看到乱码,所以为了支持前期版本加上了这个选项,如果你用了 Nginx的反向代理并期望也启用 Gzip压缩的话,由于末端通信是 http/1.0,故请设置为1.0。
gzip_comp_level 6 : gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)
gzip_types :匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。
gzip_proxied any : Nginx作为反向代理的时候启用,决定开启或者关闭后端服务器返回的结果是否压缩,匹配的前提是后端服务器必须要返回包含”Via”的header头。
server虚拟主机
http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。每个server通过监听地址或端口来区分。
1)listen监听端口,默认80,小于1024的要以root启动。可以为listen *:80、listen 127.0.0.1:80等形式。
2)server_name服务器名,如localhost、www.example.com,可以通过正则匹配(用于监听要访问的主机名)。
location
http服务中,某些特定的URL对应的一系列配置项。
root /var/www/html 定义服务器的默认网站根目录位置。如果locationURL匹配的是子目录或文件,root没什么作用,一般放在server指令里面或/下。
index index.jsp index.html index.htm 定义路径下默认访问的文件名,一般跟着root放
proxy_pass http:/backend 请求转向名称为backend服务器列表,即反向代理,对应upstream负载均衡器。也可以proxy_pass http://ip:port。
- 配置Nginx服务器虚拟目录
- nginx服务器的配置
- Nginx缓存服务器配置
- nginx配置图片服务器
- nginx服务器配置
- Nginx配置https服务器
- nginx 配置HTTPS服务器
- nginx配置图片服务器
- Nginx服务器配置指令
- Nginx服务器基本配置
- Nginx配置服务器SSI
- nginx服务器配置详解
- nginx服务器的配置
- 服务器nginx+nodejs配置
- nginx配置https服务器
- nginx服务器配置
- 【服务器】nginx二级域名配置
- nginx配置web服务器
- Java Jvm知识
- HttpClient4 客户端出现TIME_WAIT
- 概率论—全概公式&逆概公式(贝叶斯公式)
- style="display: none;"跟type="hidden"
- javascript识别上传的文件是否为图片
- Nginx服务器配置
- 复选框的全选和反选实现
- Tomcat 安装手册
- webpack less-loader 的modifyVars配置方式
- Jodd介绍
- 什么是搜索引擎分词技术?
- 移动界面侧滑(框架)
- SDUT_3361_数据结构实验之图论四:迷宫探索
- python bs4 抓取糗事百科资源