[nginx] 给http网站访问加https

本文介绍如何在Nginx服务器上配置SSL证书,实现HTTPS访问,并设置HTTP到HTTPS的重定向,确保网站的安全性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只需要给服务器配置SSL证书信息就可以了

1.申请域名SSL证书,方式有很多,本例是再腾讯云申请了一个免费证书。


需要一点时间审核,审核通过之后,下载证书待用


2.去nginx配置文件中加入如下配置,

server {
    listen 443;
        server_name XXXXX.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate /etc/nginx/1_xxxxx.xyz_bundle.crt;
        ssl_certificate_key /etc/nginx/2_xxx.xyz.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;

    }

}

上面的配置弄好之后,重启nginx

service nginx restart

这个时候就可以用https://域名  访问网站了

同时 http://域名 也是可以访问的,因为80端口默认访问http,这个时候如果想要用户访问http时自动跳转到https需要加入如下配置就可以了

再80端口的配置的location /中,加入

rewrite ^(.*)$  https://$host$1 permanent;



这个时候当用户访问http会301重定向到https。

但还有一个问题,就是当用户直接访问ip时,网页会显示证书无效(网站不安全),因为我们的证书不是ip证书

这个时候只需要把80端口的server_name 改成相应的域名

 server_name  xxx.xyz www.xxx.xyz;



另外再添加如下代码

server 

listen 80 default; 
server_name _; 
return 500; 

}

这样这用ip访问网站时,访问500;


也可以让用户ip访问时跳转到相应页面

server 


listen 80 default; 
server_name _; 
rewrite ^(.*) http://www.xxx.xyz  permanent;
}
要在 Nginx 中将 HTTP 访问重定向到 HTTPS,你需要编辑 Nginx 的配置文件,并添一个服务器块来处理这种重定向。以下是基本步骤: 1. 打开 Nginx 配置文件,通常在 `/etc/nginx/nginx.conf` 或者在你的虚拟主机配置目录(如 `/etc/nginx/sites-available` 下): ```bash sudo nano /etc/nginx/nginx.conf ``` 2. 查找已有的 HTTP 服务器块。如果你只有一个监听 80 端口的服务器块,它可能会类似于这样: ```nginx server { listen 80; server_name your_domain.com; # ...其他配置... } ``` 3. 添一个新的或替换现有的 `listen 80;` 语句,以启用HTTPS连接。你可以添一个新的 `server` 块来处理 443 端口(HTTPS默认端口),或者直接在其下添 `return 301` 来完成重定向: ```nginx # 添一个新的 server 块处理 https server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; # 使用绝对URL进行永久重定向 } # 或者直接在现有 HTTP 块下面添 redirect 到 https location / { return 301 https://$host$request_uri; } ``` 4. 如果你有SSL证书和密钥,还需要创建一个用于HTTPS的新服务器块,配置 `listen 443 ssl;`,并指定SSL配置。这通常涉及到包括证书、私钥以及可能的CA证书链: ```nginx server { listen 443 ssl; server_name your_domain.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; # 可能需要的其他 SSL 配置,如SSL版本限制、密套件等 location / { # 这里继续常规的网站配置 } } ``` 5. 保存文件并退出编辑器: ``` Ctrl+X Y Enter ``` 6. 重启 Nginx 使其应用新的配置: ```bash sudo service nginx restart ``` 现在,当你访问HTTP地址时,Nginx 应该自动重定向到相应的 HTTPS 地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值