Nginx安装以及基本配置

Nginx 简介

Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。
在我们前端日常开发中,只需要把前端项目打成一个静态资源包,然后往nginx中一丢,启动下Nginx就可以稳定访问我们的前端资源了,而且性能高且稳定。

在我们实际开发应用中,需要了解Nginx的以下几个功能

  1. 正向代理
  2. 反向代理
  3. 负载均衡
  4. 动静分离

安装Nginx

在这里我们在阿里云的服务器中使用docker镜像来运行nginx的服务

拉取镜像

docker pull nginx

在这里拉去的默认是最新版本,也可以在nginx后面加版本号拉取指定版本的nginx镜像,运行完之后查看镜像已近在本地。
docker-pull.jpg

运行容器

docker run -d -p 80:80 --name hexo-blog -v /root/workspace/hexo-blog:/usr/hexo-blog nginx

上面命令解释下:
-d: 以守护进程运行
-p 80:80: 宿主机80端口映射和容器的80端口
–name: 给这个容器取名为 hexo-blog
-v: 并设置容器卷将容器中的 usr/hexo-blog目录挂载在阿里云宿主机中的 /root/workspace/hexo-blog路径,后续我们可以直接将静态资源丢进宿主机的/root/workspace/hexo-blog这个位置,容器也就自然就有了对应的文件。
我们可以看到该容器服务已近正常运行起来了

再访问一下浏览器我们也能看到Nginx默认的页面了,

Nginx基本配置

nginx基本常用命令

nginx -t

nginx -t

上面命令两个作用

  1. 显示当前的Nginx配置文件路径
  2. 测试当前的Nginx配置是否有问题,如果有问题的话会报出那一行配错的

我们进入该容器然后运行上述命令就可查看到如下界面

nginx -s reload

nginx -s reload

也是一个很重要的命令,我们一般都会对默认的nginx配置做出一些修改,等配置文件修改完之后我们需要重启一下nginx的服务,让新配置生效。就可以运行这条命令
在这里插入图片描述

nginx -s stop

关闭nginx服务

容器中安装vim

这里简单提一下这个,因为要修改nginx的默认配置,所以需要在虚拟机中编辑文件,而现在容器中基本都只有最基本的依赖,所以vim这个需要我们自己单独在容器中安装一下

进入nginx容器

docker exec -it containerId /bin/bash

安装vim包

# 这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包
apt-get update
# 安装vim
apt-get install vim

nginx常用配置

nginx的配置文件大体可以看成三部分:

  1. 全局快
  2. event块
  3. http块
    1. http全局快
    2. server块

先来一张整体的图
在这里插入图片描述

全局块

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

#处理并发数的配置
worker_process 1; 

表nginx服务器并发处理服务器的关键配置,值越大,可以支持的并发处理数就越多,但会受到硬件,软件设备的制约

event块

影响 Nginx 服务器与用户的网络连接。比如:

worker_connections 1024;

表nginx支持最大的连接数。在上图中蓝色部分

http块

nginx配置中最频繁的部分,代理,缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
http块也可以包括http全局快, server块

http全局块

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

    # 配置了nginx所支持的文件类型,在 /etc/nginx/mime.types;中罗列了所支持的类型,如果想去除某种文件类型,可以直接在mim2.types中去除掉
    include       /etc/nginx/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"';
    # nginx的日志存储路径
    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    # 该nginx最终配置文件会把/etc/nginx/conf.d/*.conf中所有的配置集合在一起,最终合成一个大的配置文件
    include /etc/nginx/conf.d/*.conf;

/etc/nginx/mime.types 文件中展示了nginx所支持的文件类型
在这里插入图片描述

server

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
每个http可以包括多个server块,而每个server块就相当于一个虚拟主机。
而每个server块也分全局server块,以及可以同时包含多个location块。

全局server块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置

location块

一个server块可以配置多个location块。
这块的主要作用是基于nginx服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行

server {

  # 表示监听的端口号是80
  listen 80;
  # 该虚拟机的域名(也可以是ip)
	server_name www.yjian.site;
  # 访问 www.yjian.site:80(www.yjian.site) 这个地址的时候会返回 /usr/hexo-blog/public/index.html 文件给客户端
	root /usr/hexo-blog/public;

  # 表在 www.yjian.site 域名中访问中以 js|css|png|gif|jpg|mp3|ogg 这些文件会被转发到  www.yjian.site/usr/hexo-blog/public中去找
	location / {
        	root /usr/hexo-blog;
   	}
}

nginx部署静态资源demo

将前端工程打成静态资源

一般vue或者react工程的脚手架都会把前端工程打成一个静态资源包。

静态资源包丢入nginx中

这一步有很多方法,常规一点的就是先用git 上传到gitlab/github中。然后再去容器中git clone下。不拘泥于方法,只要达到这个目的就好
这里就直接简单粗暴,使用linux中的scp把本地的静态资源包复制到阿里云服务器上,由于之前我们在阿里云服务器运行nginx容器服务的时候挂在了数据卷。所以这些静态资源文件也会同步到Nginx容器中的指定位置

scp -r /Users/yjian/Documents/yjian/myGit/hexo-blog/public root@121.40.171.78:/root/workspace/hexo-blog

然后输入服务器的密码。等命令执行完之后再容器中的 /usr/hexo-blog 路径下也会有静态资源包

修改nginx配置并重启

主要就是修改一下server部分

server {

  # 表示监听的端口号是80
  listen 80;
  # 该虚拟机的域名(也可以是ip)
	server_name www.yjian.site;
  # 访问 www.yjian.site:80(www.yjian.site) 这个地址的时候会返回 /usr/hexo-blog/public/index.html 文件给客户端
	root /usr/hexo-blog/public;
}

然后 重启一下Nginx的服务。访问www.yjian.site之后发现会报如下错误:
在这里插入图片描述

这个原因就是上述配置相当于只配置了访问 www.yjian.site:80(www.yjian.site)的时候会转发到 root /usr/hexo-blog/public 这个目录中,返回index.html。
但访问其他的静态资源的时候却没有配置转发路径。所以增加location块,如下:

server {

  # 表示监听的端口号是80
  listen 80;
  # 该虚拟机的域名(也可以是ip)
	server_name www.yjian.site;
  # 访问 www.yjian.site:80(www.yjian.site) 这个地址的时候会返回 /usr/hexo-blog/public/index.html 文件给客户端
	root /usr/hexo-blog/public;

  # 表在 www.yjian.site 整个域名中访问的其他请求, 会被转发到  www.yjian.site/usr/hexo-blog/public中去找
	location / {
        	root /usr/hexo-blog;
   	}
}

一般我们的静态资源如果放在单独的地方也可以再追加配置一个location

	location ~.*(js|css|png|gif|jpg|mp3|ogg)$ {
        	root /usr/static/file;
   	}

举个例子:在访问 www.yjian.site/public/css/index.css的时候。会命中 location / 这个正则匹配
就会把这个请求的域名转发到 /usr/hexo-blog中。也就是 www.yjian.site中的index.css会去 /usr/hexo-blog中去找 public/css/index.css
所以寻找的逻辑是,通过访问的 www.yjian.site域名的80端口找到了这台公网中的服务器,然后取这台服务器中的 /usr/hexo-blog 路径下去寻找public/css/index.css
这样整个服务就正常了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值