站点图标 度崩网-几度崩溃

nginx服务器的安装和配置[运维教程]

nginx服务器的安装和配置[运维教程]

nginx 能做什么 ?

像之前部署前端静态资源一般都选择 apache,现在选择 nginx,那 nginx 都能做什么呢?

安装

访问 nginx 官网

nginx

选择 nginx 版本

这里选择的是 nginx-1.17.9

查看下面的 Pre-Built Packages 部分

点击 stable and mainline

选择 centos 版本,复制对应的 yum 配置

vim /etc/yum.repos.d/nginx.repo
 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
  1. 安装
 yum install nginx

配置

说明

新建自己的应用配置文件

# vi /etc/nginx/conf.d/my.conf
server {
  # 应用的端口
  listen 8081;
  #server_name myApp.test.com;
  
  # 静态路由
  location / {
    root /front-end/myApp;
    index index.html index.htm;
  }
  location ~ .(gif|jpg|png)$ {
    root /front-end/myApp;
  }
  
  # 反向代理
  location /api {
    proxy_pass http://localhost:3000;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Fox $proxy_add_x_forwarded_for;
  }
  location /socket.io {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
  }
}

拷贝你打包后的静态资源到 /front-end/myApp 目录下,即你打包的资源目录就是 myApp,启动 nginx,在浏览器访问 http://ip:8081,如果前面都没错,则可以看到你的应用

配置 GZip 压缩

# vim /etc/nginx/nginx.conf
 
...
http {
  ...
  # 启用 nginx 的动态压缩功能,每次收到请求,都需要对涉及到的资源进行压缩处理
  # gzip on;
  
  # 启动 nginx 的静态压缩功能,如果收到的请求支持 gzip 压缩,则返回以 .gz 结尾的资源文件代替普通文件,如果请求不支持 gzip,则返回普通文件,好处是不同服务器每次动态压缩,降低服务器的负荷
  gzip_static on;
  
  # 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
  gzip_min_length 1k;
  # gzip 压缩级别 1-10 
  gzip_comp_level 2;
  # 进行压缩的文件类型,一般配合动态压缩使用,静态压缩设置 gzip_types 没用
  # gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
  # 是否在http header中添加Vary: Accept-Encoding,建议开启
  gzip_vary on;
  ...
}
...

配置缓存

说明

缓存可分为 强缓存 和 弱缓存 两种
基于上面的配置,我们打开浏览器的控制台,一通分析之后,发现 nginx 默认为静态资源都配置了弱缓存,

而我们通用的方案一般是只需要 html 是弱缓存即可,其它像各种图片、js、css文件等,都可以设置为强缓存,因为若缓存还是会像服务器发送一次验证请求,验证资源是否过期,挺费时的

设置强缓存

# vim /etc/nginx/conf.d/my.conf
 
server {
  ...
  location ~ .(gif|jpe?g|png)$ {
    # 图片设置强缓存
    root /front-end/myApp;
    add_header Cache-Control max-age=360000;
  }
  location ~ .(js|css)$ {
    # js、css设置强缓存
    root /front-end/myApp;
    add_header Cache-Control max-age=360000;
  }
  ...
}

效果

负载均衡 和 容灾

使用场景

实践

我们准备三台 nginx 服务器,分别命名 slb(负载均衡服务器)、server1、server2

    • slb
# vim /etc/nginx/conf.d/slb.conf
 
upstream roundrobin {
  # 配置 nginx 服务器的访问规则,即权重
  server server1:80 weight=2; # server1
  server server2:80 weight=1; # server2
}
 
server {
  listen 80;
  location / {
    # 设置反向代理,将流量都代理到其它服务器
    proxy_pass http://roundrobin;
  }
}

server1

# 内容就是就是普通的 nginx 服务器的配置

server2

# 内容就是就是普通的 nginx 服务器的配置