目录
一、安装前的准备
1、gcc编译器是否安装
2、openssl库是否安装
3、pcre库是否安装
4、zlib库是否安装
二、正式安装
编辑三、启动
1、普通启动
2、通过配置文件启动
3、重启Nginx:
./nginx -s reload
4、检查Nginx是否启动
四、关闭
1、优雅关闭Nginx
2、快速关闭Nginx
4、重启Nginx:
./nginx -s reload
5、当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确
编辑6、其它
五、Nginx配置文件说明及Nginx主要应用
Nginx的核心配置文件
1.1 基本配置
1.2 events配置
1 .3 http配置
六、Nginx主要应用
1、静态网站部署
2、负载均衡
3、静态代理
4、动静分离
5、虚拟主机
Nginx的安装需要确定Linux安装相关的几个库,否则配置和编译会出现错误, 具体的检查安装过程为:
检查是否安装:yum list installed | grep gcc
执行安装:yum install gcc -y
这个已经安装了gcc编译器了,但是我们继续执行安装也无妨
检查是否安装:yum list installed | grep openssl
执行安装:yum install openssl openssl-devel -y
检查是否安装:yum list installed | grep pcre
执行安装:yum install pcre pcre-devel -y
检查是否安装:yum list installed | grep zlib
执行安装:yum install zlib zlib-devel -y
附加Tips:如果觉得上面一个一个安装太麻烦,可以用下面的命令一次性安装上面的所有东西
yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
1、将windows下载下来的nginx-1.20.2.tar.gz安装包rz上传到linux中
说明:为什么不直接通过linux命令wget下载呢,因为wget下载如果网络断了,就算你下载了99%也得重新下载,先在windows下载好再传上去,可以确保软件完整性
你们如果想要在Linux中直接下载,可以执行命令:
wget http://nginx.org/download/nginx-1.20.2.tar.gz
2、使用tar -zxvf nginx-1.20.2.tar.gz,将文件解压到当前文件夹,如果需要可以加-C 指定编译位置
3、切换至解压后的nginx主目录:cd /usr/qinTools/nginx-1.20.2/
4、在nginx主目录nginx-1.20.2下执行命令:./configure --prefix=/usr/qinTools/nginx-1.20.2
(其中--prefix是指定nginx安装路径,软件名没有限制,自己能记住就可以)
注意:等号左右不要有空格
切到我们设置的安装路径
注意:要切回刚才解压后的nginx1.20.2目录下
5、执行命令进行编译:make
6、执行命令进行安装:make install
安装成功后,可以切换到/usr/qinTools/nginx1.20.2目录下,查看内容
切换到nginx安装目录的sbin目录下,执行:./nginx
相对路径启动:./nginx -c /usr/qinTools/nginx-1.20.2/conf/nginx.conf
绝对路径启动:/usr/qinTools/nginx-1.20.2/sbin/nginx -c /usr/qinTools/nginx-1.20.2/conf/nginx.conf
其中-c是指定配置文件,而且配置文件路径必须指定绝对路径
通过查看进程:ps -ef | grep nginx
nginx 体系结构由 master 进程和其 worker 进程组成
master 进程读取配置文件,并维护 worker 进程,而 worker 进程则对请求进行实际处理
Nginx启动后,安装目录下会出现一些_tmp结尾的文件,这些是临时文件,不用管。
在浏览器中输入http://你的linux系统ip:80/访问Nginx服务器,出现以下界面
找出nginx的进程号:ps -ef | grep nginx
执行命令:kill -QUIT 主pid
这个的执行过程是:停止接收新的Nginx任务,执行完已接收的任务后关掉
注意:
找出nginx的进程号:ps -ef | grep nginx
kill -TERM 主pid
注意:
我个人习惯用kill 主pid 或者 kill -9 主pid 关闭进程
/usr/qinTools/nginx-1.20.2/sbin/nginx -c /usr/qinTools/nginx-1.20.2/conf/nginx.conf -t
(上面的命令其实就是绝对路径配置文件方式启动nginx加 -t 罢了)
Linux上查看nginx版本:/usr/qinTools/nginx-1.20.2/sbin/nginx -V
-v (小写的v)显示 nginx 的版本
-V (大写的V)显示 nginx 的版本、编译器版本和配置参数
学习Nginx首先需要对它的核心配置文件有一定的认识,这个文件位于Nginx的安装目录下(我的目录是/usr/qinTools/nginx-1.20.2/conf),核心配置文件名字为nginx.conf
详细配置,可以参考<
<<<<<<<<<<<<<<<<>>>>>>>>>>>>
#配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码
user nobody;
#配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量
worker_processes 1; #假如是2,那么就会启动2个worker进程
#配置全局错误日志及类型,[debug | info | notice | warn | error | crit],默认是error
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; #配置进程pid文件
###====================================================
#配置工作模式和连接数
events {
worker_connections 1024; #配置每个worker进程连接数上限,nginx支持的总连接数就等于worker_processes * worker_connections
#总连接数上限是65535
}
###===================================================
#配置http服务器,利用它的反向代理功能提供负载均衡支持
http {
#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
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日志及存放路径,并使用上面定义的main日志格式
#access_log logs/access.log main;
sendfile on; #开启高效文件传输模式
#tcp_nopush on; #防止网络阻塞
#keepalive_timeout 0;
keepalive_timeout 65; #长连接超时时间,单位是秒
#gzip on; #开启gzip压缩输出
###-----------------------------------------------
#配置虚拟主机
server {
listen 80; #配置监听端口
server_name localhost; #配置服务名
#charset koi8-r; #配置字符集
#access_log logs/host.access.log main; #配置本虚拟主机的访问日志
#默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该location匹配到并进行处理
location / {
#root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的html目录
root html;
#配置首页文件的名称
index index.html index.htm;
}
#error_page 404 /404.html; #配置404页面
# redirect server error pages to the static page /50x.html
#error_page 500 502 503 504 /50x.html; #配置50x错误页面
#精确匹配
location = /50x.html {
root html;
}
#PHP 脚本请求全部转发到Apache处理
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#PHP 脚本请求全部转发到FastCGI处理
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
#禁止访问 .htaccess 文件
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
#配置另一个虚拟主机
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
#配置https服务,安全的网络传输协议,加密传输,端口443,运维来配置
#
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
Nginx的核心配置文件主要由三个部分构成:基本配置、events配置、http配置
源文件内容
切记切记:基本配置文件的修改只需要改worker-processes的值(开启子进程的数目),其它的都不需要改动,默认即可,下面的修改基本配置只是用来演示说明罢了
修改基本配置
如果在修改配置文件时,nginx处于启动状态,要重启(sbin目录下执行./nginx -s reload才能生效)
查看错误日志
查看主进程pid配置文件
Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端,jsp、servlet等动态资源它是无法识别的
通过Xftp将ace-master到linux服务器/opt/www目录下,为了演示方便,将名字改为ace
方式1:通过http://192.168.xxx.xxx:80/访问
(1)修改nginx.conf配置文件
在server中,通过location匹配访问的路径,然后转发给静态资源
注意要以分号结尾
(2)重启nginx服务器
使用检查语句检查nginx配置文件有没有语法错误
/usr/qinTools/nginx-1.20.2/sbin/nginx -c /usr/qinTools/nginx-1.20.2/conf/nginx.conf -t
重启nginx
(3)在浏览器中输入http://192.168.xxx.xxx:80/进行访问
方式2:通过http://192.168.xxx.xxx:80/ace/访问
(1)修改nginx.conf配置文件
(2)重启nginx
(3)在浏览器中输入http://192.168.xxx.xxx:80/ace进行访问
初次接触:可能会遇到404找不到页面的错误,主要原因是配置路径问题;
规则:ip + port 等于 root,假设server的配置如下:
server {
listen 80; #端口号
location / {
root /opt/static /ace; #静态文件路径
}
}
替换:
http://192.168.92.128:80/ = root = /opt/static/ace
http://192.168.92.128:80/ace = root/ace = /opt/static/ace/ace
location匹配顺序
在没有标识符的请求下,匹配规则如下:
1、nginx服务器首先在server块的多个location块中搜索是否有标准的uri和请求字符串匹配。如果有多个标准uri可以匹配,就匹配其中匹配度最高的一个location。
2、然后,nginx在使用location块中,正则uri和请求字符串,进行匹配。如果正则匹配成功,则结束匹配,并使用这个location处理请求;如果正则匹配失败,则使用标准uri中,匹配度最高的location。
备注:
1、如果有精确匹配,会先进行精确匹配,匹配成功,立刻返回结果。
2、普通匹配与顺序无关,因为按照匹配的长短来取匹配结果。
3、正则匹配与顺序有关,因为是从上往下匹配。(首先匹配,就结束解析过程)
4、在location中,有一种统配的location,所有的请求,都可以匹配,如下:
location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
}
结合标识符,匹配顺序如下:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (location /)
即
(精确匹配)> (最长字符串匹配,但完全匹配) >(非正则匹配)>(正则匹配)>(最长字符串匹配,不完全匹配)>(location通配)