以下是一个同时使用 HTTP 和 HTTPS 并通过 8070 端口的配置示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
server {
listen 8070;
server_name your_domain.com;
location / {
root /var/www/html;
index index.html;
}
}
server {
listen 8070 ssl;
server_name your_domain.com;
# SSL 证书和私钥的路径
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# 可选:设置 SSL 协议和加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
# 可选:设置 HSTS 头,让浏览器强制使用 HTTPS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
location / {
root /var/www/html;
index index.html;
}
}
|
在上述配置中:
第一个 server 块:
- listen 8070;:让 Nginx 监听 8070 端口进行 HTTP 访问。
- server_name your_domain.com;:指定服务器的域名,将 your_domain.com 替换为你的实际域名。
- location /:将请求发送到 /var/www/html 目录下的静态文件,你可以根据需要修改,如将请求代理到其他服务器。
第二个 server 块:
- listen 8070 ssl;:让 Nginx 监听 8070 端口进行 HTTPS 访问。
- ssl_certificate 和 ssl_certificate_key:指定 SSL 证书和私钥的路径。
- ssl_protocols 和 ssl_ciphers:配置 SSL 协议和加密套件,提高安全性。
- add_header Strict-Transport-Security:启用 HSTS,让浏览器强制使用 HTTPS。
- location /:与 HTTP 部分类似,将请求发送到 /var/www/html 目录下的静态文件,你可以根据需要修改。
注意事项
虽然可以在同一端口同时提供 HTTP 和 HTTPS 服务,但这种配置可能会引起混淆,并且不是一个推荐的最佳实践。通常建议将 HTTP 服务和 HTTPS 服务分别部署在不同的端口,例如 80 端口用于 HTTP,443 端口用于 HTTPS,然后使用重定向将 HTTP 请求重定向到 HTTPS 以确保安全。以下是一个将 80 端口的 HTTP 请求重定向到 443 端口的 HTTPS 的示例:
1
2
3
4
5
|
server {
listen 80;
server_name your_domain.com;
return 301 https://$host$request_uri;
}
|
|