红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
Awalon
Talk is cheap,show me the code.
  1. 首页
  2. 开发工具
  3. 正文

CentOS 8 部署Nginx

2022年6月18日 264点热度 0人点赞 0条评论

查看源图像

图源:nginx状态码详解 | 小爱网址导航 (it7a.com)

安装

虽然说可以通过yum直接从自带的仓库傻瓜式安装,但nginx往往需要重新编译以添加诸如SSL等模块,所以从官网下载源码编译安装是更稳妥的做法。

可以从官网的nginx: download这个页面下载相应的Nginx版本:

image-20220618104540510

我这里为了和公司测试机上版本保持一致,选择了1.20.2,自己用的话还是选择最新的Stable版本即可。

使用wget或者其它工具下载到服务器:

cd /usr/src
wget http://nginx.org/download/nginx-1.20.2.tar.gz
  • /usr/src是Linux推荐的存放源码的目录,如果需要保留源码(方便之后重新编译以添加模块),最好在这个目录下下载源码包和解压。

  • 关于更多的Linux文件目录约定(FHS)可以阅读Linux 之旅3:文件权限与目录配置 - 魔芋红茶's blog (icexmoon.cn)。

解压并进入源码目录:

tar -zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2/

设置安装参数:

./configure --prefix=/usr/local/nginx --with-http_ssl_module

这里--prefix指定的是安装目录,同样的,根据FHS推荐,最好安装在/usr/local/nginx下。--with-http_ssl_module是为了将SSL模块编译进去,以便使用OpenSSL证书提供HTTPS支持,当然如果不需要也可以不加。

创建安装目录:

mkdir /usr/local/nginx

编译并安装:

make
make install

为了方便使用,还需要创建软链接:

ln -s /usr/local/nginx/conf/ /etc/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
  • 需要注意的是,将conf目录映射到/etc/nginx下时需要确保/etc/nginx目录不存在,否则就会映射到/etc/nginx/conf目录。

  • 如果这里不做映射,就会导致后边无法顺利申请OpenSSL证书。

一切都OK后可以通过nginx -v查看是否安装完毕。

配置

Nginx的主配置文件位于安装目录的./conf/nginx.conf。

Nginx安装目录本身就有配置示例,这里再提供一个个人使用的配置示例:

​
#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;
​
    #access_log  logs/access.log  main;
​
    sendfile        on;
    #tcp_nopush     on;
​
    #keepalive_timeout  0;
    keepalive_timeout  65;
​
    #gzip  on;
​
  
server {
    listen 80;
    server_name xx.xx.xx.xx;
    location /api {          
        add_header Access-Control-Allow-Origin *;
        proxy_pass http://127.0.0.1:8080/api/;
        proxy_redirect default;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
            
    location / {  
        root  /mnt/xxxx/dist/;
        index index.html;
        try_files $uri $uri/ /index.html =404;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
                    
        root    html;
    }
    
    location /upload {
        alias /mnt/xxxx/upload/;
        autoindex on;
    }
​
    location /h5 {
        alias /mnt/xxxx/h5/;
        index index.html;
    
    }
}
    include conf.d/*;
}

这里配置的是一个前后端分离的Spring Boot项目,代码部署在/mnt/xxxx下,后台接口的访问路径是/api,前端代码的静态路径是/h5和/,前者是移动端,后者是后台。

这里后台接口因为是用Spring Boot自带的Nginx独立运行并伺服8080端口,所以这里Nginx做了反向代理。将请求转发到127.0.0.1:8080,当然用localhost:8080也是一样的。

总之,配好了适合自己项目的配置文件后就可以启动Nginx了:

nginx

如果一切正常的话可以用浏览器看到网站了。

证书

要申请OpenSSL证书可以参考这篇文章:

  • certbot-auto不再支持所有的操作系统,新的ssl证书方法嘀咕博客的博客-CSDN博客certbot-auto

按文章内容一步步做即可。

如果出现问题可以检查:

  • Nginx是否正常运行。

  • 是否对Nginx的应用和配置目录添加了软链接。

最后修改配置使用证书可以参考:

server {
        listen       443;

        ssl on;
        server_name  kevin.xxx.com;

        ssl_certificate /etc/letsencrypt/live/kevin.xxx.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/kevin.xxx.com/privkey.pem;

        location / {
            root   /opt/www/test;
            index  index.html index.htm;
        }
}

在原本监听80端口的基础上额外配置一个监听443的服务即可,当然更恰当的做法是让80端口的服务自动跳转到443端口以强制客户端使用HTTPS。

修改好配置文件后可以通过以下命令检查是否正确:

nginx -tc /etc/nginx/nginx.conf

如果有错误,按相应的错误信息排查即可。

如果启动Nginx出现问题,可以查看Nginx的相应日志,Nginx的日志位于/var/log/nginx下。

参考资料

  • Centos使用let's encrypt免费https证书(certbot)_Kevin.Y.K的博客-CSDN博客

  • Linux ln 命令 | 菜鸟教程 (runoob.com)

  • Linux怎么取消软链接dufufd的博客-CSDN博客解除ln软连接

  • centos8 安装 nginx的详细教程(图文) - 云+社区 - 腾讯云 (tencent.com)

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: CentOS nginx
最后更新:2022年6月18日

魔芋红茶

加一点PHP,加一点Go,加一点Python......

点赞
< 上一篇
下一篇 >

文章评论

取消回复

*

code

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号