CentOS 7 安装 Nginx

595 阅读5分钟

源码包安装

1. 安装 gcc 环境

# nginx 编译时依赖 gcc 环境
$ sudo yum -y install gcc gcc-c++     

2. 安装 pcre

# 让 nginx 支持重写功能
$ sudo yum -y install pcre*       

3. 安装 zlib

# zlib 库提供了很多压缩和解压缩的方式,nginx 使用 zlib 对 http 包内容进行 gzip 压缩
$ sudo yum -y install zlib zlib-devel     

4. 安装 openssl

# 安全套接字层密码库,用于通信加密
$ sudo yum -y install openssl openssl-devel

以上安装完成后,进行 nginx 安装。

5. 下载nginx文件,解压,编译,安装

nginx官网:nginx.org/en/download…

$ mkdir nginx
$ cd nginx
$ wget https://nginx.org/download/nginx-1.20.2.tar.gz  #下载
$ tar -zxvf nginx-1.20.2.tar.gz    #解压

在完成解压缩后,进入 nginx-1.20.2 目录进行源码编译安装。

$  cd nginx-1.20.2

# 检查平台安装环境。--prefix=/usr/local/nginx 是 nginx 编译安装的目录(推荐),安装完后会在此目录下生成相关文件  --with-http_ssl_module (ssl相关模块 https)
$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module

进行源码编译并安装 nginx

$ make # 编译
$ make install # 安装

查看nginx配置

$ /usr/local/nginx/sbin/nginx -t

image.png

6.nginx制作软连接

nginx下载完成之后,并不能直接执行 nginx命令

image.png 所以制作软连接

$ ln -s /usr/local/nginx/sbin/nginx nginx   # 创建软连接
$ nginx  #启动
$ ps -ef|grep nginx  #查看nginx服务进程
$ nginx -s stop   #关闭
$ ps -ef|grep nginx  #再次查看 进程已关闭

image.png

7.nginx配置相关

vim 进入nginx默认配置

vim /usr/local/nginx/conf/nginx.conf

在底部增加配置项(Vim使用教程)(vim中带上结尾分号)

include /root/nginx/*.conf;   #表示该配置文件引入/root/nginx文件下的所有.conf配置文件

image.png

并且修改主配置的80端口为 9000(主要等会被引入的配置,会添加80端口,防止冲突。9000可以是其他端口)

image.png

然后文件夹/root/nginx 中创建并打开nginx.conf文件,添加配置

$ cd nginx
$ vim nginx.conf

image.png

nginx.conf添加如下配置,:wq保存退出。配置中server_name指向的localhost;测访问公网ip。如果server_name指向的域名,测访问对应域名

# node项目
server{
        # 端口
        listen         80;
        # 域名
        server_name    localhost;
        # 转发
        location / {
            # 将listen监听的端口转发到内网的3000端口
            # 例如:启动本地项目,项目运行端口为3000,此时外界访问服务器公网地址的80端口,将可以访问项目运行的3000
            proxy_pass http://localhost:3000;
        }
}

# web项目 todo 未验证
server {
        listen          80;
        server_name     localhost;
        # 资源地址
        root            /root/nginx/dist;
        # 目录浏览
        autoindex on;
        # 缓存处理
        add_header Cache-Control "no-cache,must-revalidate";
        # 请求配置
        location / {
                # 跨域
                add_header Access-Control-Allow-Origin *;
        }
}

启动nginx或重启nginx。验证配置是否成功:进入项目目录pm2 start app 启动项目,浏览器访问域名或公网ip。 或者加入环境变量启动线上运行NODE_ENV=production pm2 start app --update-env

image.png

image.png

8.nginx相关命令(已制作软连的情况)

nginx #启动Nginx
nginx -s reopen #重启Nginx

nginx -s reload #重新加载Nginx配置文件,然后以优雅的方式重启Nginx

nginx -s stop #强制停止Nginx服务

nginx -s quit #优雅地停止Nginx服务(即处理完所有请求后再停止服务)

nginx -t #检测配置文件是否有语法错误,然后退出

nginx -?,-h #打开帮助信息

nginx -v #显示版本信息并退出

nginx -V #显示版本和配置选项信息,然后退出

nginx -t #检测配置文件是否有语法错误,然后退出

nginx -T #检测配置文件是否有语法错误,转储并退出

nginx -q #在检测配置文件期间屏蔽非错误信息

nginx -p prefix #设置前缀路径(默认是:/usr/share/nginx/)

nginx -c filename #设置配置文件(默认是:/etc/nginx/nginx.conf)

nginx -g directives #设置配置文件外的全局指令

killall nginx #杀死所有nginx进程

nginx 配置ssl (https)

腾讯云教程:Nginx 服务器 SSL 证书安装部署

以 loud.tencent.com 为例子

  • 申请ssl证书(每个服务商都有各自渠道 搜ssl证书即可)
  • 下载ssl证书
  • Nginx 服务器 SSL 证书安装部署
  1. 使用 filezilla(本地与远程计算机间的复制文件工具)登录远程服务器,
  2. 将已获取到的 cloud.tencent.com_bundle.crt 证书文件和 cloud.tencent.com.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /usr/local/nginx/conf 目录(此处为 Nginx 默认安装目录,请根据实际情况操作)下。
  3. 登录原创服务器,vim /usr/local/nginx/conf/nginx.conf 打开并编辑nginx.con文件
server {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name cloud.tencent.com; 
        #证书文件名称
        ssl_certificate cloud.tencent.com_bundle.crt; 
        #私钥文件名称
        ssl_certificate_key cloud.tencent.com.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        location / {
           #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
           #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
            proxy_pass http://localhost:3000;
        }
    }

由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on

重启 Nginx,即可使用 https://cloud.tencent.com 进行访问。

HTTP 自动跳转 HTTPS 的安全配置

Nginx 支持 rewrite 功能。若您在编译时没有去掉 pcre,您可在 HTTP 的 server 中增加 return 301 https://$host$request_uri;,即可将默认80端口的请求重定向为 HTTPS

server {
   listen 443 ssl;
    #填写绑定证书的域名
    server_name cloud.tencent.com; 
    #证书文件名称
    ssl_certificate  cloud.tencent.com_bundle.crt; 
    #私钥文件名称
    ssl_certificate_key cloud.tencent.com.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    location / {
            #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 
            #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
        root html;
        index index.html index.htm;
    }
}
server {
    listen 80;
    #填写绑定证书的域名
    server_name cloud.tencent.com; 
    #把http的域名请求转成https
    return 301 https://$host$request_uri; 
}

重启 Nginx。即可使用 http://cloud.tencent.com 进行访问。

todo 未完**********************

web项目配置 todo nginx目录下创建 dist文件夹,dist中创建index.html进行测试

$ mkdir /nginx/dist
$ cd dist
$ vim index.html

index.html中写入测试代码:<h1>hello world</h1>,:wq保存退出~~