nginx服务基础介绍

nginx服务概述介绍
特点:
nginx服务并发处理静态资源能力将强,消耗系统资源较少 vs tomcat
功能:1 v 3
· 网站web服务功能
· 反向代理负载均衡功能
· 网站缓存服务功能
Nginx的官方介绍:http://nginx.org/en/
Nginx的参考资料:https://lnmp.org/nginx.html

nginx服务安装部署
1)利用yum方式进行安装
特点:对nginx主要应用基本功能
· 非官方源yum安装 yum install -y nginx 旧版本 默认配置/目录结构
· 官员源yum安装 更新yum源 – y

== 提示==:使用yum源如果不是官方的,那么会出现配置文件目录结构不同的问题
2)编译安装软件方式
特点:对nginx想应用高级功能
第一个历程:解决nginx软件依赖问题

yum install -y openssl-devel pcre-devel

openssl:实现支持网站HTTPS访问功能
pcre: 是否兼容perl语言正则表达式
第二个历程:创建一个程序虚拟用户(管理指定站点目录 管理进程信息)

useradd nginx -M -s /sbin/nologin

第三个历程:下载nginx程序源代码包

wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar xf nginx-1.16.1.tar.gz
cd nginx-1.16.1

建议:将编译安装的软件放到指定目录下,比如/server/tools
第四个里程:进行软件编译安装过程 3步曲
1)编译配置过程

./configure  --prefix=/application/nginx-1.16.1/ --sbin-path=/bin/ --user=nginx --group=nginx  --with-http_ssl_module  --with-http_stub_status_module

解释:
–prefix=PATH set installation prefix
指定软件程序保存目录(不用必须存在)
–sbin-path=PATH set nginx binary pathname
指定nginx程序命令文件保存路径 /bin/
–modules-path=PATH set modules path
指定模块数据保存路径
–conf-path=PATH set nginx.conf pathname
指定配置文件保存路径
–user=USER set non-privileged user for worker processes
设置worker进程管理用户
–group=GROUP set non-privileged group for worker processes
设置worker进程管理用户组
–with-http_ssl_module enable ngx_http_ssl_module
支持HTTPs访问功能
–with-http_stub_status_module enable ngx_http_stub_status_module
nginx访问状态监听模块

如果缺失了一些模块,后面用到这个功能,要添加:
首先必须关闭nginx进程服务后再执行编译安装,将缺少的模块添加在现在已有的模块后面,执行编译三部曲

2)编译过程 (翻译过程)

make     系统 识别 软件代码信息 c

3)编译安装过程

make install

查看配置信息

 nginx -V

nginx服务目录结构
/etc/nginx — 保存nginx程序配置文件目录
/etc/nginx/conf.d — 保存nginx网站主机配置文件 www.conf bbs.conf blog.conf
/var/log/nginx/ — 保存nginx程序日志文件 error.log access.log
/usr/share/nginx/html — 保存nginx程序代码数据信息 站点目录
/usr/sbin/nginx — 保存nginx命令文件目录 nginx

针对安装方式不同,nginx配置文件结构不同的问题,让人头痛,看下列所示 解决你的头痛
在这里插入图片描述

nginx 命令如何使用:
nginx           --- 直接利用命令启动服务程序
nginx -s stop   --- 利用命令停止nginx服务
nginx -s reload --- 利用命令重载(平滑重启)nginx服务
nginx -V        --- 查看nginx服务配置参数信息
nginx -v        --- 查看nginx版本信息
nginx -t        --- 检查配置文件语法是否正确   == ansible-playbook --syntax-check

提示:编译安装的nginx软件使用rpm -qa 是识别不到的,详细解释见博客《rpm -qa 不显示编译安装的软件包》
提示使用yum安装的nginx程序软件就老实使用systemctl方式进行管理

使用编译安装方式安装的nginx软件就使用编译安装的方式进行管理,不可混合使用
如果想使用systemctl方式管理编译安装的nginx,详细见博客《编译安装nginx并使用systemctl方式管理》

nginx服务配置文件
主配置文件: /etc/nginx/nginx.conf

user  nginx;                               --- 定义worker进程管理用户,
	                                               worker进程是处理用户请求进程  干活员工
												   master进程负责服务运转        老板
    worker_processes  1;                       --- 设置worker进程数量
	                                               worker进程数量 <= 2*CPU核心数量
    error_log  /var/log/nginx/error.log warn;  --- 定义错误日志保存路径
    pid        /var/run/nginx.pid;             --- 定义进程文件保存路径
    events {  
        worker_connections  1024;              --- 定义每个worker进程并发处理能力
		                                           worker进程数量*worker进程并发连接数=nginx程序并发连接数 < 系统打开文件数
												   系统打开文件数: ulimit -a 
												   open files                      (-n) 1024  											   
    }
    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        on;  ???
        keepalive_timeout  65;                                                     --- 定义TCP长连接超时时间
        include /etc/nginx/conf.d/*.conf;      --- 扩展架构主机配置文件
    }

nginx配置文件结构(组成部分

1)核心区域配置部分:开头前几行配置
2)事件区域配置部分:events { } 服务性能参数信息
3)协议区域配置部分:http { } 服务功能指令信息
4)主机区域配置部分:server { } 主机网站配置参数
5)location区域配置部分: ???
6)if区域配置部分: 判断区域 ???

扩展配置文件: /etc/nginx/conf.d/xxx.conf

worker_connections相当于一个员工能做多少事(有上限) x worker process(员工数)=nginx程序总并发数(子公司今天可处理的事情个数) < open files操作系统打开文件数(总公司(操作系统中有多个程序)的总并发数)?

nginx服务命令参数

301和302状态码的区别
== 301 ==: 第一次访问完成之后,会在浏览器上保存记录跳转信息
应用场景:域名信息进行永久修改 www.360buy.com --> www.jd.com

在这里插入图片描述
== 302== : 不会在浏览器上进行缓存,每次访问都有服务端进行跳转提示
应用场景:域名信息进行临时修改 www.51cto.com --> www.53cto.com

在这里插入图片描述
区别:
1) 返回响应报文时,302临时跳转时会返回协议信息 而301不会返回协议版本,只是返回跳转的域名
2)永久跳转时,如果第一次访问结束后,一段时间内再次访问旧的地址信息,本地浏览器就会拦截访问的旧的域名,本地浏览器更改为新的域名进行访问。就会比第一次访问时省略了一个响应报文(纠正为新的域名的信息)
如果是临时跳转:访问时一直都是和第一次一样,每次都会有响应报文来纠正新的域名,浏览器不会进行本地拦截纠正。

问题记录:
问题01:编译安装后发现有模块忘记添加上,补上缺失的模块方法是原来的不变,在后面添加上缺失的模块,但是我的添加后make && make install 是不成功的。

在这里插入图片描述
问题依然存在,不知道怎么弄这个东西了。
动态添加模块还是不会

添加成功了,是因为不能开启着服务再添加模块,一定是关闭服务后再添加模块的。

优化系统打开文件数详细见博客《进程打开的最大文件句柄数设置》

发布了170 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42506599/article/details/104304519