无锡网站排名优化报价,公司网站制作步骤,电子商务主要学的是什么,多语言的网站0. 引言
上节我们讲解了nginx的应用场景和安装#xff0c;本节继续针对nginx的各个目录文件进行讲解#xff0c;让大家更加深入的认识nginx。并通过一个实操案例#xff0c;带大家来实际认知nginx的核心配置
1. nginx安装目录结构
首先nginx的默认安装目录为#xff1a;…0. 引言
上节我们讲解了nginx的应用场景和安装本节继续针对nginx的各个目录文件进行讲解让大家更加深入的认识nginx。并通过一个实操案例带大家来实际认知nginx的核心配置
1. nginx安装目录结构
首先nginx的默认安装目录为/etc/nginx默认日志目录为/var/log/nginx
我们在安装目录下可以看到如下文件 可以通过tree指令查看树形目录结构
# 注意提前安装tree工具
yum install tree -y
# 查看目录树形结构
tree /etc/nginx或者大家可以通过rpm -ql nginx 指令查询到nginx的相关目录
下面我们首先针对nginx的安装目录做详细讲解
nginx.conf nginx的主配置文件 conf.d nginx的自定义配置文件存放路径默认在nginx.conf最后指定了加载conf.d中的所有.conf文件后续我们自定义配置的转发配置都会存放在该文件夹中 modules Nginx的一个重要特性就是支持高拓展性可以通过灵活的加载各类拓展模块从而丰富nginx的功能 Nginx的modules文件夹包含了Nginx的各种功能模块。这些模块可以通过配置文件进行加载和启用以扩展Nginx的功能。modules文件夹中的每个模块都有一个对应的配置文件这些配置文件定义了模块的具体行为。 mime.types Nginx的mime.types文件用于指定不同文件类型的MIME类型。MIMEMultipurpose Internet Mail Extensions类型是一种用于标识互联网上传输的文件类型的标准。当浏览器或其他客户端请求某个文件时Nginx会根据文件的扩展名和mime.types文件中定义的规则返回相应的MIME类型。 在这个文件中你可以定义各种文件类型及其对应的MIME类型。例如可以将.jpg文件类型定义为image/jpeg将.html文件类型定义为text/html等 fastcgi_params fastcgi配置参数fastcgi是由CGI(common gateway interface 通用网关接口)发展而来是nginx和php脚本语言之间的通信接口 scgi_params 用于处理SCGISimple Common Gateway Interface请求。SCGI是一种简单的CGI实现它允许Nginx与Python等语言的处理程序进行通信 uwsgi_params 用于处理uWSGI请求。uWSGI是一种高性能的Python应用Web服务器它允许Nginx与Python应用程序进行高效交互 其他常用目录或文件解析
/usr/share/nginx/html nginx默认存放静态html页面的目录位置自带了50x错误码页面和nginx首页 /var/log/nginx nginx的日志文件目录包括error.log和access.log error.log为nginx报错日志access.log为nginx访问日志目录包括了详细的转发请求日志可以记录请求的来源ip、客户端设备、目标ip、耗时、请求头、请求方式等该日志在企业生产中非常常用能够为我们排查接口请求问题和分析请求耗时提供有力的帮助。下一节我们将详细介绍如何自定义该日志文件格式 /usr/sbin/nginx nginx的二进制脚本包括启动、停止、重启等指令 2. nginx核心配置项
nginx的默认核心配置文件nginx.confnginx的配置项总共可分成6个模块
全局段全局配置对全局生效events段配置影响 Nginx 服务器与用户的网络连接http段配置代理、缓存、日志等功能和第三方模块的配置基本是nginx中最常用的配置server段配置虚拟主机的相关参数一个 http 块中可以有多个server 块location段用于配置匹配的uriupstream段配置后端服务器具体地址负载均衡配置 下面详细讲解6个部分
1、全局段核心参数 user nginx; # 指定我们Nginx服务的运行用户 worker_processes 1; # 定义Nginx的worker进程数量一般与服务器CPU核数保持一致 worker_processes auto; # 与当前cpu物理核心数一致 error_log /var/log/nginx/error.log warn; # 指定Nginx错误日志 pid /var/run/nginx.pid; # 指定Nginx PID进程号文件 daemon off ; 指定 Nginx 的运行方式默认是on后台运行模式前台用于调试后台用于生产 2、events段核心参数 worker_connections 1024; # 指定Nginx当前一个worker进程的最大并发连接数即并发能力 3、http段核心参数 include /etc/nginx/mime.types; # 应用文件拓展名和文件类型映射文件 default_type application/octet-stream; # 默认文件类型当Nginx无法识别当前访问页面内容时触发下载动作 log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; # 指定Nginx访问日志格式下节详细讲解 access_log /var/log/nginx/access.log main; # 定义Nginx访问日志的位置 sendfile on; # 开启文件传输模式 keepalive_timeout 65; # 连接保持超时时间单位秒值为0时表示不超时当Nginx建立TCP连接之后多长时间没有动作自动断开 include /etc/nginx/conf.d/*.conf; # 加载自定义的配置文件 #tcp_nopush on; # 减少网络报文段的数量 send_timeout 60s; # 如果在设置的时间内 Nginx 还没有将响应完全发送出去则会返回 “408 Request Time-out” 错误默认为60s keepalive_timeout 60s; # 用于设置 Nginx 保持连接的超时时间。当浏览器发送请求时如果它已经与 Nginx 建立了连接则可以直接使用该连接发送请求而不需要再次建立连接。这样就可以减少建立连接的开销提高性能 gzip on; # 开启 gzip 文件压缩浏览器加载的包大概能节约一半的空间能够很好的提升浏览速度。gzip压缩的详细参数见下文 gzip_vary on; #设置使用Gzip进行压缩发送是否携带“Vary:Accept-Encoding”头域的响应头部 gzip_comp_level 6; #设置Gzip压缩程度级别从1-9,1表示程度最低效率最高9压缩程度最高效率最低最费时间 gzip_min_length 1k; #设置允许压缩的页面最小字节数 gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xmlrss; #压缩的文件类型 我们在conf.d/default.conf可以看到默认的转发配置我们借此解读下server段、location段配置
4、server段核心参数 listen 80; # 监听的端口 server_name www.xxx.com; # 通过什么网址、域名请求过来的可以设置多个用英文逗号隔开 #error_page 404 /404.html; # 访问路径不存在时的显示页面 error_page 500 502 503 504 /50x.html; # 内部报错的显示页面 5、location段核心参数 location / { # 根路径 uri root /html/xxx; # 网站的根目录位置即静态页面目录 index index.html; # 指定首页文件 } proxy_pass http://127.0.0.1/xxx/; # 配置转发的路径或负载均衡upstream别名后文详细讲解 proxy_connect_timeout 3s; # 连接后台服务器的超时时间 proxy_read_timeout 3s; # 从后台服务器读取数据的超时时间 proxy_send_timeout 3s; # 向后台服务器发送数据的超时时间 6、upstream段核心参数 upstream test { # 负载均衡配置别名一般配合proxy_pass使用比如proxy_pass http://test/; server 192.168.0.1 weight1; # 以权重1:2转发至两个服务 server 192.168.0.2 weight2; } 3. 配置案例
实现需求 配置nginx实现当访问nginx时轮询转发至后台的两个tomcat服务 实现步骤 1、准备两个tomcat服务充当后台服务将其中一个tomcat的端口修改为8081并且调整两个tomcat的首页显示其对应的端口号后续好区分对应的服务
tomcat安装包下载https://tomcat.apache.org/download-80.cgi
vim /data/tomcat1/webapps/ROOT/index.jsp2、注意虚拟机放开80808081端口、或者关闭防火墙访问tomcat验证下 3、修改conf.d/default.conf中的配置
# 后台服务地址自定义一个负载均衡别名tomcat
upstream tomcat {server 192.168.244.41:8080;server 192.168.244.41:8081;
}server {listen 80;server_name localhost;location / {proxy_pass http://tomcat; # 通过别名实现负载均衡转发proxy_set_header HOST $host; # 代理过程中添加host头部信息防止通过ip访问时域名解析不到不能被server_name解析到proxy_http_version 1.1; # 指定http协议版本}
}如果转发的后台服务只有一个那么proxy_pass就可以直接配置转发的服务地址也不用配置upstream负载均衡了
4、检测nginx配置并重启服务
# 检测nginx配置如果输出 success 字样则表示检测成功nginx配置无语法错误
nginx -t
# 热加载重启nginx采取热部署的方式重启期间不会中断服务
nginx -s reload5、配置好后我们访问虚拟机ip通过刷新可以看到可以轮询访问到两个不同的后台tomcat 总结 如上我们通过upstream定义了要转发的后台tomcat服务的列表如果不做特殊定义默认的负载均衡算法就是轮询算法后续我们会单独开一章来详细说明nginx的负载均衡配置。
然后在server中定义了监听的端口是80端口这样当我们通过80端口进来的访问就会进入到这个转发配置中
因为这里没有什么特殊的域名所以server_name就定义了一个localhost
location后指定了/ 表示对所有路径生效如果我配置的是/xxx则只有当我们访问192.168.244.41/xxx开头的链接时才会走该转发配置
proxy_set_header参数的作用是可以设置指定的header给后台服务这里配置了Host header, 即转发了用户访问的真正域名否则后端服务得到的是nginx的ip, 这样对于一些动态拼接的地址后端服务可以在服务器正确返回
proxy_http_version 1.1指定了http协议的版本nginx代理默认http协议版本是1.0而http1.0不支持长连接所以这里指定了协议版本