前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下Nginx配置SSL以及301重定向

Linux下Nginx配置SSL以及301重定向

原创
作者头像
如此这般那便是极好
修改2023-10-26 16:18:18
7530
修改2023-10-26 16:18:18
举报
文章被收录于专栏:未来码迹未来码迹
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SSL配置
  • 301重定向
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档