惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
Spread Privacy
Spread Privacy
T
Threatpost
C
Cisco Blogs
P
Palo Alto Networks Blog
AI
AI
Cyberwarzone
Cyberwarzone
NISL@THU
NISL@THU
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
T
Tor Project blog
Latest news
Latest news
AWS News Blog
AWS News Blog
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
WordPress大学
WordPress大学
Vercel News
Vercel News
S
Securelist
爱范儿
爱范儿
J
Java Code Geeks
Know Your Adversary
Know Your Adversary
S
Schneier on Security
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
Last Week in AI
Last Week in AI
D
DataBreaches.Net
宝玉的分享
宝玉的分享
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
K
Kaspersky official blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
量子位
博客园_首页
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
Google Online Security Blog
Google Online Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
腾讯CDC
T
Threat Research - Cisco Blogs
雷峰网
雷峰网
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed
S
Security Affairs

Hsu Yeung 的博客

三圣花市 | Hsu Yeung 的博客 网站支持 Live Photo 图片展示 | Hsu Yeung 的博客 梦 | Hsu Yeung 的博客 周末午餐 | Hsu Yeung 的博客 张家界 | Hsu Yeung 的博客 话剧《寻她芳踪·张爱玲》 | Hsu Yeung 的博客 博客自动生成文章目录 | Hsu Yeung 的博客 灭螂行动! | Hsu Yeung 的博客 张靓颖成都演唱会 | Hsu Yeung 的博客 最近对博客做的一些微调总结 | Hsu Yeung 的博客 Windows 上安装 Lua | Hsu Yeung 的博客 网站支持展示 B 站 iframe 视频 SpringBoot 中使用 RedisTemplate 存取整数值的坑 | Hsu Yeung 的博客 SQL JOIN 中 ON 与 WHERE 的区别 值得记录的一些工作近况 | Hsu Yeung 的博客 周传雄成都演唱会 | Hsu Yeung 的博客 并行操作导致获取数据库连接超时 | Hsu Yeung 的博客 风信子 | Hsu Yeung 的博客 使用 logrotate 切割 nginx 日志 郁金香土培结果 | Hsu Yeung 的博客 MySQL LEFT JOIN 右表有多条数据但只取最新的一条 | Hsu Yeung 的博客 获取数据库锁等待超时问题 | Hsu Yeung 的博客 从零开始挑选相机 | Hsu Yeung 的博客 郁金香 | Hsu Yeung 的博客 我的第一束花 | Hsu Yeung 的博客 快乐的一周 | Hsu Yeung 的博客 重庆,来了 | Hsu Yeung 的博客 散步 | Hsu Yeung 的博客 Git 工作区、暂存区、版本库之间的关系 | Hsu Yeung 的博客 Collectors.toMap() 操作 value 为 null 的情况 AOP 记录请求参数时序列化异常问题 | Hsu Yeung 的博客 第一次参加演唱会 | Hsu Yeung 的博客 MySQL FIND_IN_SET 函数的使用 | Hsu Yeung 的博客 自动拆箱机制导致编译失败 | Hsu Yeung 的博客 最近 | Hsu Yeung 的博客 夜爬龙泉山 | Hsu Yeung 的博客 在 Windows 上安装多个版本 JDK 并切换使用的版本 安装 Windows Terminal 和 gsudo 记录 意外的奖励 | Hsu Yeung 的博客 记第一次修热水器 | Hsu Yeung 的博客 在 Windows 电脑上调试 iPhone Safari 浏览器的网页 给网站加上 RSS | Hsu Yeung 的博客 打雷了 | Hsu Yeung 的博客 豉汁蒸排骨 | Hsu Yeung 的博客 我的 2022 年 | Hsu Yeung 的博客 如何使用 Git 给代码打 tag | Hsu Yeung 的博客 记一次有趣的上班经历 | Hsu Yeung 的博客 我记得 | Hsu Yeung 的博客 Spring 新增或修改请求 header 参数 | Hsu Yeung 的博客 Spring 事务传播机制 | Hsu Yeung 的博客 在家自制“周黑鸭” | Hsu Yeung 的博客 晚餐 | Hsu Yeung 的博客 如何解决逻辑删除与数据库唯一约束冲突 | Hsu Yeung 的博客 [转]漫画赏析:Linux 内核到底长啥样 | Hsu Yeung 的博客 数据库逻辑设计之三大范式通俗理解 | Hsu Yeung 的博客 计算机中的大小端是指什么 | Hsu Yeung 的博客 MySQL 学习笔记 | Hsu Yeung 的博客 [转]《玉子市场》的人物魅力 | Hsu Yeung 的博客 Linux 安装 Redis | Hsu Yeung 的博客 Linux 安装 MySQL | Hsu Yeung 的博客 Linux 安装 JDK | Hsu Yeung 的博客 [转]Thymeleaf 表达式工具类 | Hsu Yeung 的博客 Shell 基础入门介绍 | Hsu Yeung 的博客 Linux 中的软链接和硬链接 | Hsu Yeung 的博客 MySQL 将某些字段的值排在最前或最后 | Hsu Yeung 的博客 数据结构与算法学习笔记 | Hsu Yeung 的博客 Visual Studio Code 如何编写运行 C 程序?
Linux 安装并配置 Nginx | Hsu Yeung 的博客
2024-05-02 · via Hsu Yeung 的博客

本文主要记录如何在 Linux 中安装 Nginx。

1. 下载 Nginx

官网链接:nginx: download

选择你需要的版本即可,这里我下载的是 1.18.0 版本的。

2. 上传并解压

下载下来后使用 ftp 工具将压缩包上传到服务器的指定目录下并解压:

# 切换到你刚才上传的 nginx 所在目录下
cd /usr/local/environment/nginx
# 解压
tar -zxvf nginx-1.18.0.tar.gz 

3. 安装 nginx 所需要的环境

# openssl 和 openssl-devel 是使用 nginx 配置 SSL 时需要用到的依赖
# 如果不需要配置 SSL 则可以不安装这两个依赖
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

4. nginx 初始化

解压完成后还是无法启动的,我们下载的是源码,需要自己编译打包,生成一个 sbin 目录。

首先切换到我们解压出来的 nginx 目录中,并执行以下命令进行初始化:

cd /usr/local/env/nginx/nginx-1.18.0/
# --prefix 后面的路径是指定 sbin 目录生成的位置
# 如果需要支持 https 访问网站,则前面需要安装 openssl 和 openssl-devel 依赖
# 并在这里加上 --with-http_ssl_module 参数进行初始化
./configure --prefix=/usr/local/environment/nginx/nginx-1.18.0 --with-http_ssl_module
make
make install

如果一切顺利的话就会在你刚刚指定的路径下生成一个 sbin 目录,里面存放着一个名字叫做 nginx 的文件。这个文件就是 nginx 的启动文件。

5. 启动 nginx

进入到 sbin 目录下,使用指定 nginx 配置文件的方式启动:

cd /usr/local/env/nginx/nginx-1.18.0/sbin/
# -c 表示指定配置文件
./nginx -c /usr/local/env/nginx/nginx-1.18.0/conf/nginx.conf

上面启动可能会报没有 /usr/local/env/nginx/nginx-1.18.0/logs/access.log/usr/local/env/nginx/nginx-1.18.0/logs/error.log 的错。只需要自己手动创建以下这两个文件即可。

cd /usr/local/env/nginx/nginx-1.18.0/
mkdir logs
cd logs
touch access.log
touch error.log

然后再重新启动 nginx 应该就不会报错了。

nginx 默认的配置监听的是 80 端口,因此我们打开浏览器访问 http://服务器 IP,如果看见 Welcome to Nginx ! 的欢迎页面则表示我们 Nginx 安装成功了。

6. 配置 SSL

首先需要准备 SSL 证书,可以自签也可以使用各云服务厂商提供的免费证书。我这里使用的是阿里云免费的 SSL 证书。

在阿里云下载 Nginx 用的证书后,解压出来会有两个文件,一个后缀名为 .key 和一个后缀名为 .pem 的文件。

6.1. 上传证书

cd /usr/local/env/nginx/nginx-1.18.0/conf
# 新建一个名字叫做 cert 的目录用于存放证书
mkdir cert

使用 ftp 将刚才下载的两个文件上传至刚建好的 cert 目录下,然后回到 conf 目录下,先备份一份默认的 nginx 配置文件,避免后续把配置文件改坏了没法恢复。

cp /usr/local/env/nginx/nginx-1.18.0/conf/nginx.conf /usr/local/env/nginx/nginx-1.18.0/conf/nginx.conf.bak

6.2. 修改 nginx.conf 文件

vim /usr/local/env/nginx/nginx-1.18.0/conf/nginx.conf

6.2.1. 配置 SSL 和反向代理

增加一个 server 段,如下,直接拷贝到配置文件末尾中:

server {
        listen 		 443 ssl;
        server_name  你的域名或者你的 ip 地址;
        ssl_certificate /usr/local/env/nginx/nginx-1.18.0/conf/cert/你的 pem 文件名字.pem;  
        ssl_certificate_key /usr/local/env/nginx/nginx-1.18.0/conf/cert/你的 key 文件名字.key; 
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
    
        # 代理路径
        location / {
            # web 网站程序存放目录
            root	html;
            index	index.html index.htm;
            # 如果需要配置反向代理,以 Java + SpringBoot 项目为例,跳转到 8088 端口
            proxy_pass	http://localhost:8088;
        }
        
        # 注意,SpringBoot 项目很有可能导致项目的静态资源(图片、css、js)被拦截
        # 因此还需要配置静态资源的反向代理
        # 这里的图片后缀自行添加、删除
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            # 解决反向代理无法访问图片的问题,和程序代理路径保持一致
            proxy_pass			http://localhost:8088;
            proxy_set_header	Host $host;
            proxy_set_header	X-Real-IP $remote_addr;
            proxy_set_header	X-Forwarded-For  $proxy_add_x_forwarded_for;
            # 过期时间自己视情况修改
            expires      30d;
        }
        location ~ .*\.(js|css)?$
        {
            # 解决反向代理无法访问 js,css 的问题,和程序代理路径保持一致
            proxy_pass			http://localhost:8088;
            proxy_set_header	Host $host;
            proxy_set_header	X-Real-IP $remote_addr;
            proxy_set_header	X-Forwarded-For  $proxy_add_x_forwarded_for;
            # 过期时间自己视情况修改
            expires      12h;
        }
}

然后回到 sbin 目录下指定配置文件重启 nginx:

cd /usr/local/env/nginx/nginx-1.18.0/sbin/
# 指定配置文件重启 nginx
./nginx -s reload -c /usr/local/env/nginx/nginx-1.18.0/conf/nginx.conf

然后打开浏览器输入 https://你的服务器 IP 或者域名,如果依旧可以看到欢迎页面则表示 SSL 配置成功了。

6.2.2. 配置 HTTP 跳转 HTTPS

继续编辑 nginx.conf 文件:

vim /usr/local/env/nginx/nginx-1.18.0/conf/nginx.conf

找到 server { listen 80 ......} 这一段配置文件,修改或新增如下的部分配置:

server {
        listen		80;
        server_name  你的域名或者 IP 地址;
        # 将所有 HTTP 请求通过 rewrite 指令重定向到 HTTPS
        rewrite ^(.*)$ https://$host$1;
}

然后保存配置文件和上面一样指定配置文件重新启动 nginx 即可。这样 http 开头的请求也会直接被重定向到 https 了。