零基础学Nginx【2】| Nginx 常用的命令和配置文件

前言

        通过前面一篇文章(👉零基础学Nginx【1】 | Nginx基础概念入门)的学习,我们已经知道了Nginx是一款高性能的代理服务器软件,支持正向代理反向代理。同时,Nginx还能实现服务器的集群和负载均衡,支持插件式开发。除此之外,Nginx还有很多十分强大的功能,如对客户端限流缓存动态黑白名单和实现灰度发布等。本篇我们就来介绍Nginx的安装和配置。
        
在这里插入图片描述

Nginx的安装

        安装和配置Nginx之前,我们需要先安装一些Nginx相关的依赖。

  • gcc
  • pcre
  • openssl
  • zlib

gcc

        安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install gcc-c++

PCRE

        PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

yum install -y pcre pcre-devel

OPENSSL

        OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

        Nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel

zlib

        当Nginx需要支持压缩功能时,如需要对上传的图片和传输的数据进行压缩处理,就需要使用到zlib。zlib 库提供了很多种压缩和解压缩的方式, 所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

安装Nginx

        下载nginx,两种方式

  1. 直接下载 .tar.gz安装包,地址:

        https://nginx.org/en/download.html

  1. 使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行yum install wget 安装。
wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

        依然是直接命令:

# 解压
tar -zxvf nginx-1.12.2.tar.gz
# 进入解压目录
cd nginx-1.12.2

        开始配置:

        其实在 nginx-1.12.0 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。

        使用默认配置

./configure

        编译安装

make && make install

        编译完成之后, 我们启动Nginx

cd /usr/local/nginx/sbin
./nginx 

        可以查看Nginx的进程

[root@localhost conf]#  ps aux|grep nginx
root     108255  0.0  0.0  20540   600 ?        Ss   15:09   0:00 nginx: master process ./nginx
nobody   108256  0.0  0.1  23068  1608 ?        S    15:09   0:00 nginx: worker process
root     108636  0.0  0.0 112824   980 pts/1    R+   16:06   0:00 grep --color=auto nginx

        在浏览器中输入IP,例如192.168.100.128 可以看到这样的页面,说明我们的Nginx就启动成功了。
        
在这里插入图片描述

Nginx的默认安装路径为:/usr/local/nginx/ ,如果想要更改路径,需要采用软链接的方式进行设置。

        我们打开 Nginx 的配置文件

vi /usr/local/nginx/conf/nginx.conf

        可以发现默认 listen 的值是 80
在这里插入图片描述
        说明我们现在默认的访问端口是: 80 ,我们再通过ip + 端口访问也是一样的。

在这里插入图片描述
        但我们现在用的是Linux系统,默认情况下有防火墙。我们Nginx的访问端口是 80,默认是访问不了的,也就是我们会看不到界面。因此我们需要在防火墙中设置开放的端口。

# 查看开放的端口
firewall-cmd --list-all

在这里插入图片描述

# 设置开放的端口
[root@localhost conf]# firewall-cmd --add-service=http --permanent
success
[root@localhost conf]# firewall-cmd --add-port=80/tcp --permanent
success
# 重启防火墙
[root@localhost conf]# firewall-cmd --reload
success

        我们再次查看开放的端口,就可以发现 80 端口已经被添加进来了。

在这里插入图片描述

Nginx中常用命令

        使用 Nginx 操作命令前提条件:必须进入 nginx 的 目录 /usr/local/nginx/sbin

cd /usr/local/nginx/sbin/

        查看版本号

[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.12.2

        查找安装路径:

[root@localhost sbin]# whereis nginx
nginx: /usr/local/nginx

        启动,停止,重加载

 cd /usr/local/nginx/sbin/
 ./nginx 
 ./nginx -s stop   # 启动
 ./nginx -s quit   # 退出
 ./nginx -s reload   # 重新加载(配置文件重新加载,我们就无需重启生效)

Nginx的配置

        Nginx 安装目录下,其默认的配置文件都放在这个目录的 conf 目录下,而主配置文件 nginx.conf也在其中,后续对 nginx 的使用基本上都是对此配置文件进行相应的修改。

在这里插入图片描述
        打开配置文件,我们可以很明显的将 nginx.conf 配置文件分为三部分:

在这里插入图片描述

第一部分:全局块

        从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

        比如上面第一行配置的:

worker_processes  1;

        这是 Nginx 服务器并发处理服务的关键配置worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约

第二部分:events块

        比如上面的配置:

events {
    worker_connections  1024;
}

        events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

        上述例子就表示每个 work process 支持的最大连接数为 1024 。 这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置

第三部分:http 块

http {
    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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。我们后面要介绍的反向代理,负载均衡,动静分离都是在这里配置的。

        需要注意的是:http 块也可以包括 http 全局块、server 块

  • http 全局块

        http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
  • server 块
server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本

        每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机

        而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。我们后边讲解Nginx实例,也主要是在这部分进行修改。

巨人的肩膀

https://www.bilibili.com/video/BV1zJ411w7SV?p=7

彩蛋

        有幸收集过一份关于Nginx的面试专题,需要的朋友可以关注【猿人菌】后台回复“Nginx”进行获取。

在这里插入图片描述

小结

        本篇文章到这里就结束了,不知道小伙伴们都掌握得怎么样呢!下一期,我们要学习Nginx的安装和Nginx常用命令的使用,敬请期待!你知道的越多,你不知道的也越多,我是Alice,我们下一期见!

         一键三连,养成习惯~

文章持续更新,可以微信搜一搜「 猿人菌 」第一时间阅读,思维导图,大数据书籍,大数据高频面试题,海量一线大厂面经…期待您的关注!

大数据梦想家 CSDN认证博客专家 CSDN博客专家 大数据学者 追梦人
大数据学者,坚信技术成就自我。
个人原创公众号「 大数据梦想家 」,每日更新大数据干货,欢迎上车!
一天的生活就是一生的缩影。在最美的年华,做最好的自己!!!
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页