SSL配置
Nginx配置文件,位置/etc/nginx/sites-enabled下的default文件
主要分为2个server块
第一个server块监听80端口,访问的协议是http
第二个server块是443端口,访问的协议是https
要添加SSL证书,主要是对第二个server块进行操作修改,
配置文件已加上注释如下。
代码语言:text复制# 第一个 server 块,用于将 HTTP 请求重定向到 HTTPS
server {
listen 80 default_server; # 监听 HTTP 端口 80
listen [::]:80 default_server;
server_name www.XXXX.com.tw; # 你的域名
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri; # 所有 HTTP 请求重定向到 HTTPS
}
# 第二个 server 块,启用 HTTPS,并设置 SSL 证书和密钥
server {
listen 443 ssl; # 监听 HTTPS 端口 443
listen [::]:443 ssl;
server_name www.XXXX.com.tw; # 你的域名
ssl_certificate /etc/nginx/ssl/your_domain.crt; # SSL 证书文件的路径
ssl_certificate_key /etc/nginx/ssl/your_domain.key; # SSL 证书密钥的路径
ssl_trusted_certificate /var/www/ssl/ROOT.crt; #SSL root根证书路径
ssl_protocols TLSv1.2 TLSv1.3; # 支持的 SSL 协议版本
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; # SSL 加密套件
ssl_prefer_server_ciphers off; # 关闭优先使用服务器的加密套件
ssl_session_cache shared:SSL:10m; # 缓存 SSL 会话
ssl_session_tickets off; # 禁用 SSL 会话票据
root /www/wwwroot/www.morglory.com/public; # 你的站点根目录
index index.php index.html index.htm index.nginx-debian.html; # 默认文档索引
# 处理站点根目录下的请求
location / {
try_files $uri $uri/ /index.php?$query_string; # 尝试找到文件,否则重定向到 index.php
}
# 处理特定的 /contact.php 请求
location = /contact.php {
try_files $uri $uri/ /index.php?$query_string; # 尝试找到文件,否则重定向到 index.php
}
# 处理 PHP 脚本请求
location ~ .php$ {
include snippets/fastcgi-php.conf; # 包含 FastCGI 配置
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/www/wwwroot/www.XXXX.com/:/tmp/"; # PHP 配置
fastcgi_pass unix:/tmp/php-cgi-82.sock; # 连接到 PHP-FPM
}
}
我们需要更改第二个server块的内容
server_name:你的域名
ssl_certificate:证书后缀为crt文件路径
ssl_certificate_key:证书后缀为key文件路径
ssl_trusted_certificate:证书根证书路径
root:网站主页存在的位置,
open_basedir:注意需要修改到你正确的配置,也可以不用。
配置完成后运行如下命令进行配置文件生效:注意(我的是Ubuntu),其他Linux可能不同
代码语言:text复制sudo nginx -s reload
301重定向
我们要对某些网址做301跳转,跳转的是https地址,所以我们要在第二个server块进行添加301跳转
添加内容如下:
代码语言:text复制location /product09-5.html {
rewrite ^/product09-5.html$ https://www.baidu.com permanent;
}
替换例子:
如要替换为product.html重定向到地址https://www.baidu.com
需要更改三个位置,
代码语言:text复制location /product.html {
rewrite ^/product.html$ https://www.baidu.com permanent;
}
全部配置文件:
代码语言:text复制# 第一个 server 块,用于将 HTTP 请求重定向到 HTTPS
server {
listen 80 default_server; # 监听 HTTP 端口 80
listen [::]:80 default_server;
server_name www.XXXX.com.tw; # 你的域名
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri; # 所有 HTTP 请求重定向到 HTTPS
}
# 第二个 server 块,启用 HTTPS,并设置 SSL 证书和密钥
server {
listen 443 ssl; # 监听 HTTPS 端口 443
listen [::]:443 ssl;
server_name www.XXXX.com.tw; # 你的域名
ssl_certificate /etc/nginx/ssl/your_domain.crt; # SSL 证书文件的路径
ssl_certificate_key /etc/nginx/ssl/your_domain.key; # SSL 证书密钥的路径
ssl_protocols TLSv1.2 TLSv1.3; # 支持的 SSL 协议版本
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; # SSL 加密套件
ssl_prefer_server_ciphers off; # 关闭优先使用服务器的加密套件
ssl_session_cache shared:SSL:10m; # 缓存 SSL 会话
ssl_session_tickets off; # 禁用 SSL 会话票据
root /www/wwwroot/www.morglory.com/public; # 你的站点根目录
index index.php index.html index.htm index.nginx-debian.html; # 默认文档索引
# 处理站点根目录下的请求
location / {
try_files $uri $uri/ /index.php?$query_string; # 尝试找到文件,否则重定向到 index.php
}
# 处理特定的 /contact.php 请求
location = /contact.php {
try_files $uri $uri/ /index.php?$query_string; # 尝试找到文件,否则重定向到 index.php
}
# 处理 PHP 脚本请求
location ~ .php$ {
include snippets/fastcgi-php.conf; # 包含 FastCGI 配置
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/www/wwwroot/www.XXXX.com/:/tmp/"; # PHP 配置
fastcgi_pass unix:/tmp/php-cgi-82.sock; # 连接到 PHP-FPM
}
location /product.html {
rewrite ^/product.html$ https://www.baidu.com permanent;
}
}
记得运行命令,让配置生效
代码语言:text复制sudo nginx -s reload