Nginx是一个高性能的Web服务器和反向代理服务器,它可以用于实现多种功能,其中之一就是支持HTTP和HTTPS协议。本文将介绍如何使用Nginx实现HTTP和HTTPS的写法。
一、配置HTTP
- 打开Nginx的配置文件,通常位于
/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
。使用文本编辑器打开,例如:
sudo nano /etc/nginx/nginx.conf
- 在
http
块中添加一个新的server
块,用于配置HTTP服务。例如,监听80端口:
http {
...
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
...
}
这里的listen 80;
表示监听80端口。server_name example.com;
表示指定域名为example.com。location / { ... }
表示匹配所有请求的路径,并将其根目录设置为/var/www/html
,默认首页为index.html
。
- 保存并关闭配置文件。然后重新加载Nginx配置:
sudo nginx -s reload
二、配置HTTPS
- 生成SSL证书和私钥。可以使用OpenSSL工具生成自签名证书和私钥,命令如下:
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
这将生成一个有效期为365天的自签名证书(cert.pem)和对应的私钥(key.pem)。在实际应用中,建议使用由权威机构颁发的证书。
- 将证书和私钥复制到Nginx服务器上。可以将它们放在指定的目录下,例如:
sudo cp cert.pem /etc/nginx/ssl/
sudo cp key.pem /etc/nginx/ssl/
- 修改Nginx配置文件,启用HTTPS服务。在
http
块中添加一个新的server
块,用于配置HTTPS服务。例如:
http {
...
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
root /var/www/html;
index index.html;
}
}
...
}
这里的listen 443 ssl;
表示监听443端口(HTTPS默认端口)。ssl_certificate
和ssl_certificate_key
分别指定证书文件和私钥文件的路径。其他配置与HTTP服务类似。
- 保存并关闭配置文件。然后重新加载Nginx配置:
sudo systemctl restart nginx
现在可以通过访问https://example.com
来验证HTTPS服务是否正常工作。如果一切正常,浏览器会显示安全锁标志并提示连接已加密。