文档中心
Nginx濡備綍閰嶇疆80鍜?43绔彛锛烻SL璇佷功瀹夎鍏ㄦ敾鐣?txt
时间 : 2025-09-27 16:26:49浏览量 : 3

作为一名网络安全从业者,我经常遇到客户询问如何正确配置Nginx的80(http)和443(https)端口,以及如何安装SSL证书。今天我就用大白话给大家详细讲解,保证看完就能上手操作!
一、Nginx的80和443端口是什么?
简单来说:
- 80端口:是HTTP协议的默认端口,用于普通的网页浏览
- 443端口:是HTTPS协议的默认端口,用于加密的安全网页浏览
举个例子:
当你在浏览器输入"http://example.com"时(注意没有s),实际上访问的是服务器的80端口;而输入"https://example.com"时(带s),访问的就是443端口。
二、为什么要把网站从80升级到443?
从安全角度讲有三大理由:
1. 防窃听:没有HTTPS时,你和网站之间的所有通信都是明文的。想象你在咖啡厅用公共WiFi登录网站账号——旁边懂技术的人可以轻松看到你的用户名密码!而HTTPS会加密这些数据。
2. 防篡改:攻击者可能在你访问的网页中插入恶意代码。比如你下载一个软件,中间人可能把正常软件替换成病毒版本。
3. 身份验证:SSL证书能证明你访问的是真正的官网而不是钓鱼网站。就像你去银行办事要看工作人员工牌一样。
三、Nginx配置实战演示
1. 基础80端口配置
先看一个最简单的Nginx配置文件(通常在/etc/nginx/sites-available/default):
```nginx
server {
listen 80;
监听80端口
server_name example.com;
你的域名
location / {
root /var/www/html;
网站文件存放路径
index index.html;
默认首页文件
}
}
```
2. SSL证书获取
常见有三种方式:
- 免费证书:Let's Encrypt(三个月有效期)
- 付费证书:DigiCert、GeoTrust等(一年期)
- 自签名证书(仅用于测试)
以Let's Encrypt为例:
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
这个命令会自动:
1. 验证域名所有权
2. 生成证书文件(保存在/etc/letsencrypt/live/)
3. 自动修改Nginx配置
3. HTTPS完整配置示例
listen 443 ssl;
关键变化在这里!
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
SSL优化配置
ssl_protocols TLSv1.2 TLSv1.3;
禁用不安全的旧协议
ssl_prefer_server_ciphers on;
root /var/www/html;
index index.html;
HSTS头(安全增强)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
HTTP强制跳转HTTPS(重要!)
listen 80;
return 301 https://$host$request_uri;
4. Nginx安全加固小技巧
除了基本配置外,安全人员还会做这些:
1) 禁用旧版TLS协议
ssl_protocols TLSv1.2 TLSv1.3;
TLSv1.0和TLSv1.1已被证实存在漏洞
2) 启用OCSP装订
```nginx
ssl_stapling on;
ssl_stapling_verify on;
这相当于给SSL证书再加一道验证环节
3) 设置安全的加密套件
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
就像给保险箱换更复杂的密码锁
四、常见问题排查指南
Q1: HTTPS页面加载混合内容怎么办?
错误提示:"此页面部分内容不安全"
解决方法:
- Chrome按F12 → Console查看具体哪个资源是http的
- HTML代码中确保所有图片/js/css都使用//或https://开头
Q2: SSL证书过期怎么处理?
Let's Encrypt证书每90天过期一次,建议设置自动续期:
```bash
sudo crontab -e
添加一行:
0 */12 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"
Q3: Nginx报错"no "ssl_certificate" is defined"
检查:
1) cert路径是否正确(注意pem文件的权限)
2) nginx -t测试配置文件语法
3) systemctl restart nginx后查看journalctl -xe日志
SEO优化小贴士
搜索引擎现在明显偏爱HTTPS网站:
? Google明确表示HTTPS是排名因素之一
? Chrome浏览器对HTTP网站显示"不安全"警告
? HTTP/2协议必须基于HTTPS才能发挥最佳性能
建议做完HTTPS后到Google Search Console提交新的sitemap!
希望这篇指南能帮你轻松搞定Nginx的SSL配置。记住在网络安全领域,"不加密=裸奔",赶快给你的网站穿上'加密外套'吧!如果还有疑问欢迎留言讨论~
TAG:nginx 80 443 ssl证书,nginx ssl pem,nginx安装ssl证书,nginx ssl_ciphers