前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础学Nginx【2】| Nginx 常用的命令和配置文件

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

作者头像
大数据梦想家
发布2021-01-27 16:44:51
4230
发布2021-01-27 16:44:51
举报

前言

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

在这里插入图片描述
在这里插入图片描述

Nginx的安装

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

  • gcc
  • pcre
  • openssl
  • zlib

gcc

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

代码语言:javascript
复制
yum install gcc-c++

PCRE

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

代码语言:javascript
复制
yum install -y pcre pcre-devel

OPENSSL

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

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

代码语言:javascript
复制
yum install -y openssl openssl-devel

zlib

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

代码语言:javascript
复制
yum install -y zlib zlib-devel

安装Nginx

下载nginx,两种方式

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

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

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

依然是直接命令:

代码语言:javascript
复制
# 解压
tar -zxvf nginx-1.12.2.tar.gz
# 进入解压目录
cd nginx-1.12.2

开始配置:

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

使用默认配置

代码语言:javascript
复制
./configure

编译安装

代码语言:javascript
复制
make && make install

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

代码语言:javascript
复制
cd /usr/local/nginx/sbin
./nginx 

可以查看Nginx的进程

代码语言:javascript
复制
[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 的配置文件

代码语言:javascript
复制
vi /usr/local/nginx/conf/nginx.conf

可以发现默认 listen 的值是 80

在这里插入图片描述
在这里插入图片描述

说明我们现在默认的访问端口是: 80 ,我们再通过ip + 端口访问也是一样的。

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
# 查看开放的端口
firewall-cmd --list-all
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
# 设置开放的端口
[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

代码语言:javascript
复制
cd /usr/local/nginx/sbin/

查看版本号

代码语言:javascript
复制
[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.12.2

查找安装路径:

代码语言:javascript
复制
[root@localhost sbin]# whereis nginx
nginx: /usr/local/nginx

启动,停止,重加载

代码语言:javascript
复制
 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 存放路径、日志存放路径和类型以及配置文件的引入等。

比如上面第一行配置的:

代码语言:javascript
复制
worker_processes  1;

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

第二部分:events块

比如上面的配置:

代码语言:javascript
复制
events {
    worker_connections  1024;
}

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

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

第三部分:http 块

代码语言:javascript
复制
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 定义、日志自定义、连接超时时间、单链接请求数上限等。

代码语言:javascript
复制
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 块
代码语言:javascript
复制
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,我们下一期见!

一键三连,养成习惯~

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Nginx的安装
    • gcc
      • PCRE
        • OPENSSL
          • zlib
            • 安装Nginx
            • Nginx中常用命令
            • Nginx的配置
              • 第一部分:全局块
                • 第二部分:events块
                  • 第三部分:http 块
                  • 巨人的肩膀
                  • 彩蛋
                  • 小结
                  相关产品与服务
                  轻量应用服务器
                  轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档