Nginx

目录

一、安装前的准备

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安装相关的几个库,否则配置和编译会出现错误, 具体的检查安装过程为:

1、gcc编译器是否安装

检查是否安装:yum list installed | grep gcc

执行安装:yum install gcc -y

这个已经安装了gcc编译器了,但是我们继续执行安装也无妨

Nginx_第1张图片

2、openssl库是否安装

检查是否安装:yum list installed | grep openssl

执行安装:yum install openssl openssl-devel -y

Nginx_第2张图片

Nginx_第3张图片

3、pcre库是否安装

检查是否安装:yum list installed | grep pcre

执行安装:yum install pcre pcre-devel -y

Nginx_第4张图片

4、zlib库是否安装

检查是否安装:yum list installed | grep zlib

执行安装:yum install zlib zlib-devel -y

Nginx_第5张图片

附加Tips:如果觉得上面一个一个安装太麻烦,可以用下面的命令一次性安装上面的所有东西

yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y

Nginx_第6张图片

二、正式安装

1、将windows下载下来的nginx-1.20.2.tar.gz安装包rz上传到linux中Nginx_第7张图片

说明:为什么不直接通过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 指定编译位置

Nginx_第8张图片

3、切换至解压后的nginx主目录:cd /usr/qinTools/nginx-1.20.2/

Nginx_第9张图片

4、在nginx主目录nginx-1.20.2下执行命令:./configure --prefix=/usr/qinTools/nginx-1.20.2

(其中--prefix是指定nginx安装路径,软件名没有限制,自己能记住就可以) 

注意:等号左右不要有空格

Nginx_第10张图片

切到我们设置的安装路径 

Nginx_第11张图片

注意:要切回刚才解压后的nginx1.20.2目录下

5、执行命令进行编译:make

Nginx_第12张图片

Nginx_第13张图片

6、执行命令进行安装:make install

Nginx_第14张图片

安装成功后,可以切换到/usr/qinTools/nginx1.20.2目录下,查看内容

Nginx_第15张图片

Nginx_第16张图片三、启动

1、普通启动

切换到nginx安装目录的sbin目录下,执行:./nginx

Nginx_第17张图片

2、通过配置文件启动

相对路径启动:./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是指定配置文件,而且配置文件路径必须指定绝对路径

Nginx_第18张图片

3、重启Nginx:

./nginx -s reload

Nginx_第19张图片

4、检查Nginx是否启动

通过查看进程:ps -ef | grep nginx

Nginx_第20张图片

nginx 体系结构由 master 进程和其 worker 进程组成

master 进程读取配置文件,并维护 worker 进程,而 worker 进程则对请求进行实际处理

Nginx启动后,安装目录下会出现一些_tmp结尾的文件,这些是临时文件,不用管。

在浏览器中输入http://你的linux系统ip:80/访问Nginx服务器,出现以下界面

Nginx_第21张图片

Nginx_第22张图片

四、关闭

1、优雅关闭Nginx

         找出nginx的进程号:ps -ef | grep nginx

         执行命令:kill -QUIT 主pid

这个的执行过程是:停止接收新的Nginx任务,执行完已接收的任务后关掉

Nginx_第23张图片

注意:

  • 其中pid是主进程号的pid(master process),其他为子进程pid(worker process)
  • 这种关闭方式会处理完请求后再关闭,所以称之为优雅的关闭

 2、快速关闭Nginx

找出nginx的进程号:ps -ef | grep nginx

         kill -TERM 主pid

注意:

  • 其中pid是主进程号的pid(master process),其他为子进程pid(worker process)
  • 这种关闭方式不管请求是否处理完成,直接关闭,比较暴力,称之为快速的关闭

Nginx_第24张图片

我个人习惯用kill 主pid 或者 kill -9 主pid 关闭进程

4、重启Nginx:

./nginx -s reload

Nginx_第25张图片

5、当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确

/usr/qinTools/nginx-1.20.2/sbin/nginx  -c /usr/qinTools/nginx-1.20.2/conf/nginx.conf -t

(上面的命令其实就是绝对路径配置文件方式启动nginx加 -t 罢了)

6、其它

Linux上查看nginx版本:/usr/qinTools/nginx-1.20.2/sbin/nginx -V

-v (小写的v)显示 nginx 的版本

-V (大写的V)显示 nginx 的版本、编译器版本和配置参数

Nginx_第26张图片

五、Nginx配置文件说明及Nginx主要应用 

Nginx的核心配置文件

    学习Nginx首先需要对它的核心配置文件有一定的认识,这个文件位于Nginx的安装目录下(我的目录是/usr/qinTools/nginx-1.20.2/conf),核心配置文件名字为nginx.conf

Nginx_第27张图片

详细配置,可以参考<> ,只做参考,不能上传使用,容易中文乱码!

<<<<<<<<<<<<<<<<>>>>>>>>>>>>
#配置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配置

Nginx_第28张图片

1.1 基本配置

源文件内容

Nginx_第29张图片

切记切记:基本配置文件的修改只需要改worker-processes的值(开启子进程的数目),其它的都不需要改动,默认即可,下面的修改基本配置只是用来演示说明罢了 

修改基本配置 

Nginx_第30张图片

如果在修改配置文件时,nginx处于启动状态,要重启(sbin目录下执行./nginx -s reload才能生效)

Nginx_第31张图片

查看错误日志

Nginx_第32张图片

Nginx_第33张图片

查看主进程pid配置文件 

Nginx_第34张图片

Nginx_第35张图片

1.2 events配置

Nginx_第36张图片

1 .3 http配置

Nginx_第37张图片

Nginx_第38张图片

Nginx_第39张图片

六、Nginx主要应用

1、静态网站部署

2、负载均衡

3、静态代理

4、动静分离

5、虚拟主机

七、静态网站部署

       Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端,jsp、servlet等动态资源它是无法识别的

案例:将ace-master这个静态网站部署到Nginx服务器上

通过Xftp将ace-master到linux服务器/opt/www目录下,为了演示方便,将名字改为ace 

Nginx_第40张图片方式1:通过http://192.168.xxx.xxx:80/访问

(1)修改nginx.conf配置文件

在server中,通过location匹配访问的路径,然后转发给静态资源

Nginx_第41张图片

注意要以分号结尾

(2)重启nginx服务器

使用检查语句检查nginx配置文件有没有语法错误

/usr/qinTools/nginx-1.20.2/sbin/nginx -c /usr/qinTools/nginx-1.20.2/conf/nginx.conf -t

重启nginx 

Nginx_第42张图片 (3)在浏览器中输入http://192.168.xxx.xxx:80/进行访问

Nginx_第43张图片

方式2:通过http://192.168.xxx.xxx:80/ace/访问

(1)修改nginx.conf配置文件

Nginx_第44张图片

(2)重启nginx 

Nginx_第45张图片

Nginx_第46张图片

(3)在浏览器中输入http://192.168.xxx.xxx:80/ace进行访问

Nginx_第47张图片

location中配置路径讲解

初次接触:可能会遇到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通配)

八、负载均衡

你可能感兴趣的:(linux,nginx)