下面是nginx配置支持https的完整攻略:
1. 生成SSL证书
首先需要从CA机构或者自签颁发机构申请SSL证书,若是自签颁发机构需要通过 OpenSSL 工具生成相应证书,具体操作如下:
- 安装 OpenSSL 工具
sudo apt-get install openssl
- 创建自签名请求文件,生成公、私钥对和最终SSL证书
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl req -newkey rsa:2048 -nodes -keyout yourdomain.com.key -out yourdomain.com.csr
openssl x509 -req -days 365 -in yourdomain.com.csr -signkey yourdomain.com.key -out yourdomain.com.crt
其中 yourdomain.com.crt
为生成的 SSL 证书, yourdomain.com.key
为生成的 SSL 私钥。
2. 配置nginx
- 打开nginx配置文件
sudo vim /etc/nginx/nginx.conf
- 在
http
块中添加下列内容:
# 开启转发代理
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 开启SSL
ssl_certificate /etc/nginx/ssl/yourdomain.com.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
# SSL优化配置
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_prefer_server_ciphers on;
# 配置证书验证方式
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
- 配置server块
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
location / {
proxy_pass http://localhost:3000/;
}
}
3. 测试是否配置成功
- 启动nginx
sudo nginx -t && sudo nginx
- 在浏览器中访问站点,看看是否能成功使用 HTTPS 连接。
以上就是支持 HTTPS 的 nginx 配置攻略。
示例一:HTTPS转发静态网页
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
示例二:HTTPS转发Node.js应用
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以上就是两个示例,第一个示例演示了如何转发静态网页,第二个示例是如何转发Node.js应用。
希望以上内容对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx配置支持https的示例代码 - Python技术站