配置 Nginx 以支持 HTTPS

1. 安装 Nginx

如果你尚未安装 Nginx,请先安装:

Ubuntu/Debian

sudo apt update

sudo apt install nginx -y

CentOS/RHEL

sudo yum install nginx -y

启动 Nginx:

sudo systemctl enable nginx --now

2. 配置 Nginx 以支持 HTTPS

(1)创建 Nginx 站点配置

Nginx 默认的站点配置通常在 /etc/nginx/sites-available/default(Ubuntu/Debian)或 /etc/nginx/nginx.conf(CentOS)中。

编辑配置文件:

sudo nano /etc/nginx/sites-available/default

或者:

sudo nano /etc/nginx/nginx.conf

添加或修改如下配置:

server {

listen 80;

server_name your_domain_or_ip;

进行 HTTP 自动重定向到 HTTPS

return 301 https://hostrequest_uri;

}

server {

listen 443 ssl;

server_name your_domain_or_ip;

SSL 证书文件路径(需要根据你的情况修改)

ssl_certificate /etc/nginx/ssl/nginx.crt;

ssl_certificate_key /etc/nginx/ssl/nginx.key;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;

root /var/www/html/dist; # dist 目录的路径

index index.html;

location / {

try_files uri uri/ =404;

}

}

3. 生成 SSL 证书

(1)使用 Let's Encrypt(推荐)

如果你有域名,可以使用 Let's Encrypt 免费证书:

sudo apt install certbot python3-certbot-nginx -y

sudo certbot --nginx -d your_domain

成功后,Let's Encrypt 会自动配置 Nginx,并启用 HTTPS。

(2)使用自签名 SSL 证书(测试用)

如果你没有域名或仅用于本地测试,可以使用自签名证书:

sudo mkdir -p /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT/CN=localhost"

解释:

  • -days 365:证书有效期 365 天(可以修改)。
  • -newkey rsa:2048:生成 2048 位 RSA 密钥。
  • -subj:证书的主题信息,CN=localhost 指定主机名(你可以改成服务器 IP)。
    sudo vim /etc/nginx/nginx.conf
    server {

listen 80;

server_name _;

所有 HTTP 请求跳转到 HTTPS

return 301 https://hostrequest_uri;

}

server {

listen 443 ssl;

server_name _;

ssl_certificate /etc/nginx/ssl/nginx.crt;

ssl_certificate_key /etc/nginx/ssl/nginx.key;

强制使用 TLS 1.2 或更高版本

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;

启用 HSTS(HTTP Strict Transport Security)

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

目录路径

root /var/www/html/dist;

index index.html;

location / {

try_files uri uri/ =404;

}

}

然后,重新加载 Nginx 配置:

sudo systemctl restart nginx

4. 测试 HTTPS

如果使用了 Let's Encrypt,在浏览器访问:

https://your_domain

如果使用了自签名证书,访问时可能会有安全警告,手动信任即可。

5.(可选)强制 HTTPS 及安全优化

为了强制所有流量使用 HTTPS,可以修改 server 配置:

server {

listen 80;

server_name your_domain_or_ip;

return 301 https://hostrequest_uri;

}

然后,重启 Nginx:

sudo systemctl restart nginx

相关推荐
hweiyu0015 分钟前
Linux 命令:scp
linux·运维·服务器
cpsvps26 分钟前
容器内部DNS解析针对美国服务器微服务的调试指南
运维·服务器·微服务
8K超高清38 分钟前
汇世界迎全运 广州国际社区运动嘉年华举行,BOSMA博冠现场展示并分享与科技全运的故事
运维·服务器·网络·数据库·人工智能·科技
郁大锤1 小时前
Docker 中删除镜像与容器的完整指南
运维·docker·容器
2501_916013742 小时前
苹果上架 App 全流程详解,iOS 应用发布步骤、ipa 文件上传工具、TestFlight 测试与 App Store 审核经验
android·ios·小程序·https·uni-app·iphone·webview
2501_915909062 小时前
HTML 开发工具有哪些?常用 HTML 开发工具推荐、学习路线与实战经验分享
android·小程序·https·uni-app·iphone·webview
yy_xzz2 小时前
Debian开发板TQ3658设置日期和时间显示 配置无法装入 发生未知的错误
运维·debian
铜峰叠翠3 小时前
tomcat创建bat启动,结合任务计划实现自动重启tomcat服务
运维
Dovis(誓平步青云)3 小时前
《Linux 构建工具核心:make 命令、进度条、Gitee》
linux·运维·学习