Nginx http自动跳转到https ssl

1.申请证书(公司会有通用证书),将证书上传到/etc/ssl

2.修改Nginx的配置

 2.1添加http到https的跳转配置;

   server {
        listen 80;
        server_name portal.mycompany.com;
        return 301 https://$http_host$request_uri;
    }

2.2 配置SSL证书

  在server中添加

server {
        #listen       80;
        listen       443 ssl;
            server_name  portal.mycompany.com;
        
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        
        ssl_certificate      /etc/ssl/server.pem;
        ssl_certificate_key  /etc/ssl/server.key;

3.更改配置重启nginx

cd /usr/local/nginx/sbin

./nginx -s reload

检查配置是否正确

./nginx -t

 

<think> 我们正在讨论如何配置Nginx实现HTTP自动跳转HTTPS。根据引用内容,主要有两种常见方法:使用return指令或rewrite指令。 方法一:使用return指令(推荐) 在监听80端口的server块中,添加return 301重定向到HTTPS。 示例配置: server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; # 永久重定向到HTTPS } 方法二:使用rewrite指令 同样在80端口的server块中,使用rewrite规则进行重定向。 示例配置: server { listen 80; server_name example.com; rewrite ^(.*)$ https://$host$1 permanent; # 永久重定向 } 两种方法的区别: - return指令更高效,直接返回状态码和重定向地址,推荐使用。 - rewrite指令通过正则匹配,灵活性高,但性能略低于return。 注意事项: - 确保HTTPS的server块已正确配置SSL证书。 - 如果使用IP访问,则$server_name可能不适用,可以使用$host(引用[3]提到无域名时的情况)。 引用说明: [^1]: 引用[1]中直接使用return 301方式,这是Nginx新版本的推荐写法。 [^2]: 引用[2]中使用了rewrite指令实现跳转。 [^3]: 引用[3]提供了有域名和无域名两种情况下的配置思路。 [^4]: 引用[4]同样使用了rewrite指令。 下面提供一个完整的配置示例(使用return方式): server { listen 80; server_name changzhang.sjzgjlg.com.cn; return 301 https://$server_name$request_uri; # 跳转HTTPS } 此时,当用户访问http://changzhang.sjzgjlg.com.cn时,会自动跳转https://changzhang.sjzgjlg.com.cn。 生成的相关问题: 1. 如何为Nginx配置SSL证书? 2. Nginx中rewrite指令的用法有哪些? 3. 如何配置Nginx同时支持HTTPHTTPS? </think> ### 🔄 Nginx 配置 HTTP 自动跳转 HTTPS 的完整指南 #### ✅ 方法一:使用 `return 301` 指令(**推荐**) ```nginx server { listen 80; # 监听 HTTP 80 端口 server_name example.com www.example.com; # 配置域名 # 核心跳转指令 ↓ return 301 https://$server_name$request_uri; # 永久重定向到 HTTPS [^1] # 可选:添加日志记录 access_log /var/log/nginx/http_redirect.log; } ``` **原理**: - `$server_name`:自动替换为当前域名 - `$request_uri`:保留原始请求路径(如 /user/profile) - `301`:永久重定向状态码(SEO 友好) --- #### ✅ 方法二:使用 `rewrite` 指令 ```nginx server { listen 80; server_name example.com; # 正则匹配所有请求 ↓ rewrite ^(.*)$ https://$host$1 permanent; # 跳转HTTPS [^2][^4] } ``` **参数说明**: - `$host`:客户端请求的原始域名 - `$1`:正则捕获的请求路径 - `permanent`:等效于 301 重定向 --- #### 🌐 无域名场景的特殊配置(IP 访问) ```nginx server { listen 80; server_name _; # 匹配所有域名 # 跳转HTTPS + 保留原始 IP ↓ return 301 https://$http_host$request_uri; # $http_host 含端口号 [^3] } ``` --- ### ️ 关键注意事项 1. **HTTPS 服务配置** 必须存在有效的 HTTPS server 块并配置 SSL 证书: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; ... # 其他配置 } ``` 2. **测试跳转效果** 使用 curl 验证: ```bash curl -I http://example.com # 应返回 "HTTP/1.1 301 Moved Permanently" ``` 3. **清除浏览器缓存** 301 重定向会被浏览器永久缓存,测试时需用隐身模式或清除缓存 --- > **最佳实践**:优先使用 `return 301` 方案,效率更高且避免正则解析开销。配置后执行 `nginx -t` 检测语法,再 `systemctl reload nginx` 平滑重启 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值