Nginx服务

一、安装及使用Nginx

1.编译安装nginx

bash 复制代码
【编译安装 Nginx 服务】
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1、安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
 
2、创建运行用户
useradd -M -s /sbin/nologin nginx
 
3、编译安装
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
 
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
 
make && make install
 
4、优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 
5、使用systemd 进行管理 Nginx 系统服务
vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

#各行含义:
[Unit] ##服务说明
Description=nginx  ##描述服务
After=network.target  ##依赖,当依赖的服务启动的时候再启动自定义的服务
[Service] ##服务运行参数的设置
Type=forking ##表示后台运行,使用启动类型应该同事指定PIDFile=,这样便于systemd能够追踪
PIDFile=/usr/local/nginx/logs/nginx.pid  ##指定pid的文件
ExecStart=/usr/local/nginx/sbin/nginx   ##服务启动的命令,就是绝对路径启动的命令
ExecReload=/bin/kill -s HUP $MAINPID  ##加载
ExecStop=/bin/kill -s QUIT $MAINPID   ##关闭
PrivateTmp=true   ##表示给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target  ##服务安装的相关设置,可设置多用户

chmod 754 /lib/systemd/system/nginx.service
systemctl daemon-reload 
#重新加载配置
systemctl start nginx.service
systemctl enable nginx.service
#主配置文件路径在/usr/local/nginx/conf

2.nginx验证命令和发送信号

bash 复制代码
# 测试配置文件语法
nginx -t
# 测试配置文件语法并打印所有配置
nginx -T

USR1: USR1 信号用于重新打开 Nginx 的日志文件。这在你想要对日志文件进行轮转(如每天生成一个新的日志文件)时很有用。发送这个信号告诉 Nginx 切换到新的日志文件,继续记录日志,而不必重启 Nginx 服务。

USR2飞行中升级: (又称热升级或无中断升级)是指在不中断服务的情况下,对服务器软件进行升级。这种技术在需要高可用性和最小停机时间的生产环境中尤为重要。在 Nginx 中,飞行中升级允许你升级 Nginx 软件版本或重新加载配置文件,而不影响正在进行的客户端连接。
飞行中升级作用:

1.最小化停机时间

2.无缝发布新功能

3.提高系统可靠性

4.简化维护操作

5.降低用户影响

二、nginx配置详细解释

nginx 官方帮助文档:http://nginx.org/en/docs/

Nginx的配置文件的组成部分:

主配置文件:nginx.conf

子配置文件: include conf.d/*.conf

1.nginx调优

2.http设置

http 是一个大的语句块,包含若干个小的语句块(比如server语句块)

bash 复制代码
http {
 include  /etc/nginx/mime.types;
 #include 指令用于将其他文件或目录中的配置内容包含到当前位置。
 ...
 ...  #各server的公共配置
 server {    #每个server用于定义一个虚拟主机,第一个server为默认虚拟服务器
 ...
 }
 server {     
 ...
 server_name   #虚拟主机名
 root     #主目录
 #sever 下的 root指定了主页文件的位置
 alias     #路径别名
 location [OPERATOR] URL {     #指定URL的特性
 ...
 if CONDITION {
 ...
              }
 		  }
	 }
}

3.server块构建虚拟主机 实际只有1台, 好像有多台主机

建立独立的配置文件(方便管理) 构建不同虚拟主机 PC端和手机端

bash 复制代码
vim /usr/local/nginx/conf/nginx.conf
#修改配置文件 要放在  http 模块里
 include             /etc/nginx/mime.types;
 include       /usr/local/nginx/conf.d/*.conf;

mkdir -p /usr/local/nginx/conf.d/
#建立子配置文件

cd /usr/local/nginx/conf.d/
vim pc.conf 
#分别编写配置文件
#以下是基于端口号,基于ip地址和基于域名与httpd服务类似

server {
   listen 80;
   server_name localhost;
   root /data/nginx/html/pc/;
}
#也可以使用location  模块
server{
        listen  192.168.133.10:80;
        server_name www.pc.com;
     location / {
        root  /data/nginx/html/pc;
    }
}

vim mobile.conf 
#分别编写配置文件

server {
   listen 192.168.133.10:9527;
   server_name m.kgc.com;
   root /data/nginx/html/mobile/;
}

mkdir /data/nginx/html/pc -pv
mkdir /data/nginx/html/mobile -pv
#构建数据文件夹

echo pc > /data/nginx/html/pc/index.html
echo moblie > /data/nginx/html/mobile/index.html
#构建数据文件
                     
curl 192.168.133.10:9527
moblie
curl 192.168.133.10
pc

4.alias 别名

location 和 alias本质区别:

localtion 相当于追加

alias相当于替换

例:

bash 复制代码
server {
   listen 80;
   server_name www.pc.com;
   location /nwes {
        root /data/nginx/html/pc/;
        #相当于追加  将 文件夹news追加到/data/nginx/html/pc/news
        }
   location /study{
        alias /mnt/nginx/sports/;
        #相当于替换 你访问 study  就是访问/mnt/nginx/sports
        }
}

5.location匹配

在一个server中location配置段可存在多个,location 是 Nginx 配置文件中的一个指令,用于定义请求的匹配规则和对应的处理方式。它允许你根据请求的 URI 或其他条件来指定不同的处理逻辑。
语法规则:

bash 复制代码
#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }

=              	#用于标准url前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求
^~            	#用于标准url前,表示使用正则表达式,并且匹配以指定的正则表达式开头,对URI的最左边部分做匹配检查,不区分字符大小写
~              	#用于标准url前,表示使用正则表达式,并且区分大小写
~*            	#用于标准url前,表示使用正则表达式,并且不区分大写
不带符号   	  	#匹配起始于此uri的所有的uri

#\            	#用于标准url前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
相关推荐
测试的艺术7 分钟前
网络知识1-TCP/IP模型
网络·网络协议·tcp/ip
山川生色20 分钟前
本机上装好的ubuntu 全部的开发软件 如何备份以后移到另一台电脑上 还不会出现引导错误?
运维·服务器·postgresql
დ旧言~25 分钟前
实战项目 Boost 搜索引擎
服务器·c语言·前端·网络·汇编·c++
Sagice29 分钟前
CVE-2019-13272(Linux本地内核提权)
linux·运维·服务器·网络·安全
李李李李李同学1 小时前
等保测评讲解初测和复测有哪些区别
网络·安全·信息安全等级保护测评
长弓三石2 小时前
鸿蒙网络编程系列50-仓颉版TCP回声服务器示例
网络·tcp/ip·harmonyos
LKID体2 小时前
【python图解】数据结构之字典和集合
java·服务器·前端
好喜欢吃红柚子3 小时前
Vscode连接服务器
服务器·ide·vscode
网络安全-老纪3 小时前
网工考试——网络安全
网络·安全·web安全