nginx配置https并做强制跳转http到https

文章目录[x]
  1. 0.1:废话
  2. 0.2:下载证书以及做什么
  3. 0.3:修改nginx配置
  4. 0.4:重启服务
  5. 0.5:设置HTTP请求自动跳转HTTPS
  6. 0.6:检查

废话

咕咕咕。。。。。。。

今天接到一个任务,,,没有奖励。。。。。。姑且有吧,,,,,强行续命。。。。。+1s+1s+1s

废话不多说,直接进入正题。。。

nginx配置https并做强制跳转http到https

嘀嘀哒嘀。。。。

下载证书以及做什么

客户是从阿里云购买的。。。主管说必须使用通配符,我从网站上看了下,要1700大洋,没想到这个东西这么贵,可惜苦了卑微的小秦。(我之前都是用的宝塔的Let's Encrypt证书,毕竟像我这样的人,都使用免费的啦,而且还是一键部署,贼方便。)

先下载证书

先下载证书

下载证书ssl证书

证书下载下来是一个压缩包,里面有个.pem和.key后缀的文件,这俩文件就是花了1700大洋买来的。

我们需要把这俩文件上传至Nginx安装目录(默认Nginx安装目录为/usr/local/nginx/conf)下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。

这里我用了取巧的方式,ftp。。。时哥看见了要打死我的感觉。。。虽然知道会对学习指令有负面影响,但是它方便啊,真香。。。

修改nginx配置

修改Nginx安装目录/conf/nginx.conf文件(这里的路径是相对路径,就是这个文件的上级目录)

找到下面的文件

<pre id="codeblock-xn7-suv-gpb" class="pre codeblock" data-spm-anchor-id="a2c4g.11186623.2.i10.6f3245eaWTMjuV"><code class="hljs nginx"><span class="hljs-comment"># HTTPS server</span>
  <span class="hljs-section">server</span> {
  <span class="hljs-attribute">listen</span> <span class="hljs-number">443</span>;
  <span class="hljs-attribute">server_name</span> localhost;
  <span class="hljs-attribute">ssl</span> <span class="hljs-literal">on</span>;
  <span class="hljs-attribute">ssl_certificate</span> cert.pem;
  <span class="hljs-attribute">ssl_certificate_key</span> cert.key;
  <span class="hljs-attribute">ssl_session_timeout</span> <span class="hljs-number">5m</span>;
  <span class="hljs-attribute">ssl_protocols</span> TLSv1 TLSv1.<span class="hljs-number">1</span> TLSv1.<span class="hljs-number">2</span>;
  <span class="hljs-attribute">ssl_ciphers</span> ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  <span class="hljs-attribute">ssl_prefer_server_ciphers</span> <span class="hljs-literal">on</span>;
  <span class="hljs-attribute">location</span> / {

按照下文中注释内容修改nginx.conf文件:

</p>

<pre id="codeblock-e78-mwh-kko" class="pre codeblock language-java" data-spm-anchor-id="a2c4g.11186623.2.i11.6f3245eaWTMjuV"><code class="hljs"># 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen <span class="hljs-number">443</span> ssl;   #SSL协议访问端口号为<span class="hljs-number">443</span>。此处如未添加ssl,可能会造成Nginx无法启动。
server_name localhost;  #将localhost修改为您证书绑定的域名,例如:www.example.com。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain name.key;   #将domain name.key替换成您证书的密钥文件名。
ssl_session_timeout <span class="hljs-number">5</span>m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
ssl_prefer_server_ciphers on;   
location / {
root html;   #站点目录。
index index.html index.htm;   
}
}                     
<p data-spm-anchor-id="a2c4g.11186623.2.i12.6f3245eaWTMjuV">

在此感谢阿里云。。。。。。。好吧,这些都是我抄的。。。

重启服务

保存nginx.conf文件后退出。

<pre id="codeblock-gvc-7wd-4kv" class="pre codeblock language-java" data-spm-anchor-id="a2c4g.11186623.2.i14.6f3245eaWTMjuV"><code class="hljs">nginx -s stop
nginx -s start
(这俩是阿里云的,不过我用的是下面的)
nginx -s reload

设置HTTP请求自动跳转HTTPS

在需要跳转的HTTP站点下添加以下rewrite语句,实现HTTP访问自动跳转到HTTPS页面。

<pre id="codeblock-qz2-10z-5hx" class="pre codeblock" data-spm-anchor-id="a2c4g.11186623.2.i16.6f3245eaWTMjuV"><code class="hljs nginx"><span class="hljs-section">server</span> {
 <span class="hljs-attribute">listen</span> <span class="hljs-number">80</span>;
 <span class="hljs-attribute">server_name</span> localhost;   <span class="hljs-comment">#将localhost修改为您证书绑定的域名,例如:www.example.com。</span>
<span class="hljs-attribute">rewrite</span><span class="hljs-regexp"> ^(.*)$</span> https://<span class="hljs-variable">$host</span><span class="hljs-variable">$1</span> <span class="hljs-literal">permanent</span>;   <span class="hljs-comment">#将所有http请求通过rewrite重定向到https。</span>
 <span class="hljs-attribute">location</span> / {
<span class="hljs-attribute">index</span> index.html index.htm;
}
}

检查

看下网址即可。。。。把https://强行换成http://,看他是否跳转https://的就行啦

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00