Nginx | nginx 配置 https 及各种问题解决_nginx 忽略请求[email protected]许卿的博客-程序员秘密

技术标签: Nginx  nginx  运维  https  

一、项目背景

  在生产环境下,已经安装 Nginx,并能够正常运行。鉴于客户要求,将在运行的 nginx 由 http 协议更改为 https 协议。并且,当输入http://域名/路径 时,能够跳转到 https://域名/路径

二、添加 http_ssl_module

2.1 编译Nginx,添加SSL模块

2.1.1 全新安装的 Nginx

  针对全新安装的Nginx,编译时添加对应的ssl模块即可

./configure --prefix=/usr/local/nginx --with-http_ssl_module

#预编译时,添加 --with-http_ssl_module

2.1.2 已安装的 Nginx

2.1.2.1 获取有https模块的 nginx 可执行文件
2.1.2.1.1 编译生成nginx可执行文件
wget http://nginx.org/download/nginx-1.9.15.tar.gz
#下载原版本的nginx

tar zxvf nginx-1.9.15.tar.gz
#解压nginx

cd nginx-1.9.15
#进入解压后的nginx文件夹

./configure --prefix=/usr/local/nginx --with-http_ssl_module
#指定现在的nginx目录并添加 --with-http_ssl_module

make
#进行编译,而不进行安装
2.1.2.1.2 执行后查看nginx可执行文件

在这里插入图片描述

2.1.2.2 复制新nginx可执行文件并授权

  复制新nginx可执行文件并授权nginx可执行文件,若不授权则可能不能正常启动
在这里插入图片描述

2.2 确定 http_ssl_module 是否安装成功

/usr/local/nginx/sbin/nginx -V
#要根据自己的实际nginx可执行文件进行是修改

在这里插入图片描述

三、配置 https 的 SSL证书

3.1 上传 SSL 证书到指定目录

  相关的路径和文件名要进行记录,便于配置使用
在这里插入图片描述

3.2 修改 nginx 的配置文件

vim /usr/local/nginx/conf/nginx.conf

  在 [server] 模块下进行相关配置的添加, 这些都是腾讯云推荐的配置,直接拿来用就行了,只是修改证书的路径,注意这些路径是相对于/etc/nginx/nginx.conf文件位置,也可以使用绝对路径。

.....
#上述配置,请忽略
http {
    
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 128;
    large_client_header_buffers 4 64k;
    client_max_body_size 20m;               #上传文件最大值
    server_tokens off;                      #隐藏nginx版本号

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;


    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 3;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    include /usr/local/nginx/conf.d/*.conf;

    server {
    
        listen        443 ssl;
        server_name   cj.xxxx.edu.cn;
        client_body_buffer_size 50m;
        client_max_body_size 100m;

        #charset koi8-r;

#这些都是腾讯云推荐的配置,直接拿来用就行了,只是修改证书的路径,注意这些路径是相对于/etc/nginx/nginx.conf文件位置

        ssl on;
        ssl_certificate          /usr/local/nginx/ssl/xxx.edu.cn.cer.pem;
        ssl_certificate_key     /usr/local/nginx/ssl/xxx.edu.cn.key.pem;
        ssl_session_timeout 15m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

#设置ibpsv3转发规则
        location /ibpsv3 {
    
                proxy_pass http://ibpsHost;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header REMOTE-HOST $remote_addr;
                add_header 'Access-Control-Allow-Origin' '*';

                }
......
#下述配置文件,请忽略
          }
 }

在这里插入图片描述
  配置文件解析


  ssl on;
  ssl_certificate         1_XXX.com_bundle.crt;
  ssl_certificate_key     2_XXX.com.key;
  ssl_session_timeout 5m;
#客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
#按照这个协议配置
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#按照这个套件配置
  ssl_prefer_server_ciphers on;
#设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。

四、查看效果

在这里插入图片描述

五、http重定向到https

  注意是新增对80端口的监听,这样请求80,才能转到443。在https的server中直接修改会造成死循环。
  即http的80 server{ } 和 https的 443 server{ } 应均存在

5.1 第一种方式使用return 301:

#......省略
server {
    
    listen 80;
    server_name  www.xxxx.edu.cn;
    #server_name 后面建议加域名
    return 301 https://127.0.0.1$request_uri;
    }

#......省略
 server {
    
    listen        443 ssl;
    server_name   www.xxxx.edu.cn;
    }

#......省略

5.2 第二种方式使用rewrite:

#......省略
server {
    
    listen 80;
    server_name   www.xxxx.edu.cn;
    #server_name 后面建议加域名
    rewrite ^(.*)$ https://$host$1 permanent;
    }

#......省略
	
 server {
    
    listen        443 ssl;
    server_name   www.xxxx.edu.cn;
    }
    
#......省略

六、附nginx工具

https://www.digitalocean.com/community/tools/nginx

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41980405/article/details/108550238

智能推荐

原生JS与jQuery中事件对象的坐标详解screenX/clientX/pageX/offsetX_jquery screen坐标_风铭大师的博客-程序员秘密

首先我们先介绍什么是事件: 事件就是某一个对象在特定的时刻做了某一件事。比如:点击事件,当我点击了按钮后变触发了点击事件浏览器会做出相应的响应。那么事件有三大要素: 1、事件源:dom对象 2、事件类型:具体参照W3C的javas事件参考手册 3、事件响应:一般是一个函数,称之为事件处理函数原生JS注册事件的语法: //原生注册事件语法: documen...

CSS3:text-overflow实现文字截取,超出部分显示省略号_weixin_34364071的博客-程序员秘密

1. 概述使用text-overflow:ellipsis对溢出文本显示省略号有两个好处,一是不用通过后端程序截取;二是有利于SEO。2. text-overflow的属性clip: 当对象内文本溢出时不显示省略标记(…),而是将溢出的部分裁切掉。 如下图: p ellipsis: 当对象内文本溢出时显示省略标记(…),如下图: string:使...

WdatePicker插件来实现开始和结束时间选择范围控制_wdatepicker选择开始时间后结束时间自动加一周_feifuzeng的博客-程序员秘密

这里使用的是WdatePicker插件来实现开始和结束时间选择范围控制(开始时间选择之后,结束时间不可再选择开始时间之前时间,开始时间同理:结束时间选择之后,开始时间不可再选择结束时间之前的开始时间)时间选择精度精确到秒 开始时间: <input type="text" readonly="readonly" class="input-small Wdate choos

html不用点击自动执行,页面自动执行(加载)js的几种方法_weixin_39955154的博客-程序员秘密

一、JS方法1.最简单的调用方式,直接写到html的body标签里面:2.在JS语句调用:function myfun()   {alert("this window.onload");}/*用window.onload调用myfun()*/// 不要括号window.onload = myfun;3。Js调用 onload方法window.onload = function(){func1();...

攻防世界WEB进阶之upload1_harry_c的博客-程序员秘密

攻防世界WEB进阶之upload1一、分析二、实操三、答案难度系数: 1星题目来源: 暂无题目描述:暂无题目场景: 略题目附件: 暂无一、分析首先打开场景,上传文件进行抓包操作,发现存在部分js代码。function check(){upfile = document.getElementById("upfile");submit = document.getElement...

C 语言字符串分割函数 p = strtok(NULL, " ");_"strtok(null,\" \")"_dream_uping的博客-程序员秘密

源代码:#include &amp;amp;lt;stdio.h&amp;amp;gt;#include&amp;amp;lt;string.h&amp;amp;gt;int main(){ char str[] = &amp;quot;经度:111°11’11'' 纬度: 30°30'30''&amp;quot;; char *p; char a[]=&amp;quot; &amp;quot;; p = strtok(str, &amp;quot;:&amp;qu

随便推点

TCP/IP协议的三次握手及实现原理_hf188680的博客-程序员秘密

TCP/IP是很多的不同的协议组成,实际上是一个协议组,TCP用户数据报表协议(也称作TCP传输控制协议,Transport Control Protocol。可靠的主机到主机层协议。这里要先强调一下,传输控制协议是OSI网络的第四层的叫法,TCP传输控制协议是TCP/IP传输的6个基本协议的一种。两个TCP意思非相同。 )。TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交

大学计算机基础知识考试题及答案,《大学计算机基础》试题题库及答案_杪橙a的博客-程序员秘密

《大学计算机基础》试题题库及答案 《大学计算机基础》试题题库及答案一、单选题练习1.完整的计算机系统由( C )组成。A.运算器、控制器、存储器、输入设备和输出设备B.主机和外部设备C.硬件系统和软件系统D.主机箱、显示器、键盘、鼠标、打印机2.以下软件中,( D )不是操作系统软件。A.Windows xp B.unix C.linux D.microsoft office3.用一个字节最多能编...

pub格式的文件打开报错:Publisher无法打开文件 解决办法_id_rsa.pub打不开_丶凉的博客-程序员秘密

最近搞 Git 上传文件到 Github 仓库遇到了点问题:id_rsa.pub 这个文件打不开,但是我需要复制内容生成 ssh 密钥文件格式类型为:Microsoft Publisher Document (.pub)解决方法:1、在当前文件目录输入 cmd【直接定位到当前目录下】2、dos 下查看文件内容的命令:type 文件名3、复制内容就可以去粘贴使用啦,希望可以帮到你们!!!...

Log4J使用教程_log4j怎么用_日月星辰~的博客-程序员秘密

1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.properties ### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4...

错误:php70w-common conflicts with php-common-5.3.3-4_weixin_34323858的博客-程序员秘密

博客原文地址https://xgs888.top/post/view?id=43错误:php70w-common conflicts with php-common-5.3.3-49.el6.x86_64 You could try using --skip-broken to记录一下 由于之前系统自带的php5.3.3没有卸载干净;在执行phpize时报错说需要php-d...

java学习第二天之循坏语句的解析_努力的布布的博客-程序员秘密

java学习第二天标签(空格分隔):java作者:张远征第三章 选择结构&amp;&amp;循坏结构1.基本的选择结构if(判定条件true 或者 false){a;} else {b;}如果条件为真则执行a块代码,如果条件为假,则执行b块代码;多重选择if结构嵌套的使用举例源码如下:此处输入代码package 章节2;import java.util.Scanner;...

推荐文章

热门文章

相关标签