Nginx是一款高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。它以高并发、低内存使用和模块化的特点而闻名,非常适合用于静态内容的服务和负载均衡。

安装Nginx

在CentOS系统上安装Nginx可以通过使用EPEL(Extra Packages for Enterprise Linux)仓库来完成。以下是详细步骤:

安装EPEL仓库

首先,安装EPEL仓库,这是一个为RHEL和CentOS提供附加软件包的仓库。

sudo yum install epel-release

更新软件包

安装EPEL仓库后,更新系统中的所有软件包,以确保系统和软件包都是最新版本。

sudo yum update

安装Nginx

接下来,安装Nginx服务器。

sudo yum install nginx

Nginx命令

下面是一些常用的Nginx管理命令。

启动Nginx

sudo systemctl start nginx

设置开机自启

sudo systemctl enable nginx

关闭Nginx

sudo systemctl stop nginx

关闭开机自启

sudo systemctl disable nginx

Nginx配置

一般Nginx默认配置都是在一个文件中,这样会显得有点乱且不易维护。因此,建议采用分块配置,以提高可读性和维护性。

基础块配置 默认在 /etc/nginx/nginx.conf

基础块配置

# worker_processes指定工作进程的数量,这里设置为1,通常设置为CPU核心数
worker_processes  1;
​
events {
    # worker_connections定义单个工作进程允许的最大并发连接数
    worker_connections  1024;
}
​
http {
    # 引入mime类型定义文件
    include       mime.types;
    # 设置默认的MIME类型
    default_type  application/octet-stream;
    # 允许客户端请求的最大单文件体积
    client_max_body_size 1024m;
​
    # 开启gzip压缩功能
    # --------------------------------------------------
    gzip on;
    # 设置压缩的最小文件大小,文件小于该值将不会进行压缩
    gzip_min_length 1k;
    # 设置压缩缓冲区的大小和数量
    gzip_buffers 16 64k;
    # 设置压缩时使用的HTTP协议版本
    gzip_http_version 1.1;
    # 设置gzip的压缩级别,范围1-9,9压缩级别最高,也最消耗CPU资源
    gzip_comp_level 5;
    # 需要进行压缩的MIME类型列表
    gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
    # 在响应头中添加"Vary: Accept-Encoding",告诉代理服务器进行内容缓存时考虑是否支持gzip压缩
    gzip_vary on;
    # 禁用对IE6及以下版本的gzip压缩,因为这些版本的浏览器对gzip支持不佳
    gzip_disable "MSIE [1-6]\.";
    # --------------------------------------------------
​
    # 启用sendfile方式传输文件,提高传输效率
    sendfile on;
​
    # 设置长连接的超时时间
    keepalive_timeout  65;
​
    # 引入自定义的Nginx配置,确保该文件路径和文件名正确
    include   /home/nginx/nginx.conf;
}

服务器块配置

# 官网
server {
    # 监听443端口,启用SSL
    listen       443 ssl; 
    # 定义服务器名称,可以处理hhhsl.cn和www.hhhsl.cn
    server_name  hhhsl.cn www.hhhsl.cn;
    # 设置字符编码为UTF-8
    charset utf-8;
    # 证书文件路径
    ssl_certificate /home/nginx/hhhsl.cn/hhhsl.cn_bundle.pem;
    # 私钥文件路径
    ssl_certificate_key /home/nginx/hhhsl.cn/hhhsl.cn.key;
​
    location / {
        # 网站根目录
        root   /home/hblog/dist;
        # 尝试按照顺序访问URI、URI目录和index.html
        try_files $uri $uri/ /index.html;
        # 默认首页文件
        index  index.html index.htm;
    }
​
    # 后端接口转发
    location /api/ {
        # 将客户端请求的Host头转发到后端服务器
        proxy_set_header Host $http_host;
        # 将客户端的真实IP地址转发到后端服务器
        proxy_set_header X-Real-IP $remote_addr;
        # 将客户端的REMOTE-HOST头转发到后端服务器
        proxy_set_header REMOTE-HOST $remote_addr;
        # 将客户端的X-Forwarded-For头转发到后端服务器
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 将/api/路径下的请求转发到本地8888端口的后端服务器
        proxy_pass http://localhost:8888/;
    }
​
    # 定义错误页面
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        # 错误页面的根目录
        root   html;
    }
}