网站如何支持并强制HTTPS访问?Nginx服务器

本文指导如何在Linux系统的Nginx服务器上配置SSL,包括获取SSL证书,上传文件,修改nginx.conf,重启服务器以及设置强制HTTPS。
环境:Linux系统,nginxweb服务器

一、准备好所需的证书文件

各大云服务厂商都有提供SSL证书服务,申请一个免费的SSL证书并下载。解压缩后得到下图中的文件,红框内的部分代表SSL证书绑定的域名。

二、上传文件至Nginx安装目录

使用FTP工具将上图中的KEY和安全证书上传到Nginx的根目录,我的Nginx安装目录是 /etc/nginx 。如果你因为权限问题没有上传成功,那么你需要先赋予自己上传文件的权限。

sudo chmod a+rwx /etc/nginx

三、修改Nginx的配置文件

使用vim修改 /etc/nginx/nginx.conf 文件,并将如下的内容修改后添加到文件中去。

server {
     #SSL 默认访问端口号为 443
     listen 443 ssl; 

     #请填写绑定证书的域名
     server_name saas-time.club; 

     #请填写刚上传的证书文件的相对路径或绝对路径
     ssl_certificate saas-time.club_bundle.crt; 

     #请填写刚上传的KEY文件的相对路径或绝对路径
     ssl_certificate_key saas-time.club.key; 

     ssl_session_timeout 5m;

     #请按照以下协议配置
     ssl_protocols TLSv1.2 TLSv1.3; 

     #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;

     location / {
				 #如果你的网站当前已经可以通过http访问,则无需关注location模块
         #本模块的目的就是设置访问路径,有很多种设置方式
         #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
         root html; 
         index  index.html index.htm;
     }
 }

四、重启Nginx服务器

sudo nginx -s reload   #不终止服务器的情况下重载配置,修改配置文件后建议采用此命令重载


五、补充:通过Nginx配置强制HTTPS

核心思路是nginx.con配置文件中同时监听80和443端口的请求,当接收到http请求时通过301重定向到https,见下文代码块中#######包含的内容。

	server {
		listen        80;
		charset      utf-8;
		client_max_body_size 75M;


        #SSL 默认访问端口号为 443
        listen 443 ssl; 
        #请填写绑定证书的域名
        server_name saas-time.club; 
        #请填写证书文件的相对路径或绝对路径
        ssl_certificate saas-time.club_bundle.crt; 
        #请填写私钥文件的相对路径或绝对路径
        ssl_certificate_key saas-time.club.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        ###############
		if ($scheme = http) {
                 return 301 https://$server_name$request_uri;
            }
        ############
	}

原文地址:SAAS时刻 | 网站如何支持并强制HTTPS访问?Nginx服务器

<think>好的,用户现在问的是如何配置Nginx和Apache服务器强制HTTPS。之前他们提到了混合内容的问题,现在需要具体的服务器配置方法。我需要先回忆一下Nginx和Apache的配置方式,确保给出正确的步骤。 首先,对于Nginx,通常的做法是监听80端口,将所有请求301重定向到HTTPS的443端口。需要检查是否有server块处理80端口的请求,正确设置return指令。可能还需要考虑SSL证书的配置,但用户的问题主要是重定向,所以暂时不需要详细讲SSL配置部分。 然后是Apache,使用mod_rewrite模块来实现重写规则。需要确保启用了重写模块,在.htaccess文件或虚拟主机配置中添加RewriteCond和RewriteRule。同时,可能需要提到启用SSL模块和配置虚拟主机。 用户可能已经有一定的服务器管理经验,但需要具体的配置示例。要提供清晰的代码块,解释每个部分的作用。比如,在Nginx配置中,listen 80;和return 301的用法。对于Apache,RewriteEngine On和重写条件的设置。 另外,用户可能关心配置后的测试步骤,比如如何验证是否成功重定向。可以建议使用curl命令或者浏览器访问HTTP链接来测试。同时,提醒用户注意配置后的重启或重载服务,使配置生效。 还要考虑用户可能遇到的常见错误,例如配置语法错误导致服务无法启动,或者忘记保存文件权限问题。需要提醒用户检查配置文件的正确性,使用nginx -t或apachectl configtest来验证配置。 最后,用户可能需要进一步了解如何获取SSL证书,比如Let's Encrypt的申请过程,或者如何配置HSTS头。但当前问题集中在强制HTTPS的配置,所以可能需要将这些问题作为相关问题列出,供用户后续参考。 </think>要强制通过 HTTPS 访问网站,需配置 Nginx 或 Apache 服务器将所有 HTTP 请求重定向到 HTTPS。以下是具体配置方法: --- ### **Nginx 配置** 1. **编辑 Nginx 配置文件** 打开站点配置文件(通常在 `/etc/nginx/sites-available/` 或 `/etc/nginx/conf.d/`)。 2. **添加 HTTPHTTPS 重定向** 在 `server` 块中监听 80 端口,强制跳转: ```nginx server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name example.com www.example.com; # SSL 配置(证书路径、协议等) ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; # 其他 HTTPS 配置... } ``` 3. **检查配置重启服务** ```bash sudo nginx -t # 验证配置语法 sudo systemctl reload nginx ``` --- ### **Apache 配置** 1. **启用重写模块** ```bash sudo a2enmod rewrite sudo systemctl restart apache2 ``` 2. **修改 `.htaccess` 或虚拟主机配置** 在 `.htaccess` 文件或 `<VirtualHost *:80>` 块中添加: ```apache <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> ``` 或直接配置虚拟主机: ```apache <VirtualHost *:80> ServerName example.com Redirect permanent / https://example.com/ </VirtualHost> <VirtualHost *:443> ServerName example.com # SSL 配置... </VirtualHost> ``` 3. **重启 Apache 服务** ```bash sudo systemctl restart apache2 ``` --- ### **验证配置** - 使用浏览器访问 `http://example.com`,应自动跳转到 `https://example.com`。 - 使用命令行测试: ```bash curl -I http://example.com # 应返回 HTTP/1.1 301 Moved Permanently # 且 Location 头指向 HTTPS ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城博花园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值