一. gcc 安装

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

yum install -y gcc-c++
二. PCRE pcre-devel 安装

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

yum install -y pcre pcre-devel
三. zlib 安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel
四. OpenSSL 安装

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel
五.下载nginx

使用wget命令下载。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。

// 可以去官网找自己想要的版本
wget -c https://nginx.org/download/nginx-1.17.0.tar.gz
六.解压
  • 解压前首先看系统是否安装过nginx
find -name nginx
  • 如果有 删除命令
yum remove nginx
  • 接下来进入到下载目录
tar -zxvf nginx-1.17.7.tar.gz
七. 安装
# 进入nginx目录
cd  nginx-1.17.7
./configure 
--user=nobody 
--group=nobody 
--prefix=/usr/local/nginx 
--with-http_stub_status_module
--with-http_gzip_static_module 
 --with-http_realip_module 
 --with-http_sub_module 
 --with-http_ssl_module
 
make
make install

–user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。–group=name类似
–prefix=PATH : 指定nginx的安装目录。默认 /usr/local/nginx
–with-http_stub_status_module : 用来监控 Nginx 的当前状态
–with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址
–with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装

八. 创建全局命令
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
九. 启动,重启,停止
./nginx  
# 停止 相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s stop  
# 停止 相当于是待nginx进程处理任务完毕进行停止
./nginx -s quit
# 重启
./nginx -s reload
十.防火墙设置
systemctl start firewalld            # 开启防火墙
systemctl stop firewalld            # 关闭防火墙
systemctl status firewalld            # 查看防火墙状态
systemctl enable firewalld            # 开机自动启动
systemctl disable firewalld            # 关闭开机启动

firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent

# 修改防火墙规则后,需要重新载入
firewall-cmd --reload
# 查看端口开放状态以及删除规则命令
firewall-cmd --zone= public --query-port=80/tcp
firewall-cmd --zone= public --remove-port=80/tcp --permanent
# 查看开放的端口及服务
firewall-cmd --list-ports
firewall-cmd --list-services
十一.配置 nginx.conf
#user  nobody;
worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
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;
        }
 
    }
    # *********************添加http服务主要看这里***********************
    server {
        listen       8001;
        server_name  localhost;
 
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
 
        location / {           
            root   root/dist;  #vue前端项目打包后放在这里             
            index  index.html index.htm;   #这个index.html  是上面dist目录下的index.html 
            try_files $uri $uri/ /index.html; # 解决刷新出现404                 
        }
 
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    # *********************结束*********************
     # *********************配置其他 的服务时将这个server模块复制一份,修改监听端口和地址,以及root文件路径*********************
 
}
最后 使用使用如下命令

重启即可

nginx -s reload