nginx配置https及url重写

nginx配置https及url重写

  • 一、https简介
    • 1、安全访问
    • 2、数据的安全性
    • 3、数据的完整性
    • 3、身份的真实性
  • 二、配置https网站
    • 1、环境规划
    • 2、部署私有CA
    • 3、部署https的虚拟主机
  • 三、URL重写
    • 1、语法
  • 四、location的写法
    • 1、语法
    • 2、location = uri {}
    • 3、location ~ uri { }
    • 4、location ~* uri { }
    • 5、location ^~ uri { }
    • 5、location的优先级
  • 五、nginx处理php页面
    • 1、安装php-fpm
    • 2、配置nginx调用php
    • 3、测试访问php页面

一、https简介

https 密文

1、安全访问

数据的安全性,加密/解密
数据的完整性
身份的真实性

2、数据的安全性

发送方加密数据,接收方解密数据

  • 对称加密算法
    加密、解密时使用的密钥是一样的
    典型算法: DES、3DES、AES

  • 非对称加密算法
    密钥对,公钥、私钥
    公钥加密、私钥解密
    典型算法: RSA、DSA

  • 使用原则
    使用对称算法加密真实的数据,使用非对称算法加密对称算法中的密钥

3、数据的完整性

借助哈希算法保证数据的完整性
哈希算法: MD5、SHA

[root@node01 ~]# md5sum /etc/fstab 
e48a442f1af72ac73d69ba0b12de254b  /etc/fstab
[root@node01 ~]# sha224sum /etc/passwd
6b427e3f351f343325baa53ef9a04f14ff13172f50ee9c2fd32fbe65  /etc/passwd

3、身份的真实性

私钥签名,公钥验证签名
在这里插入图片描述- 实际应用:
密钥、证书

  • 证书的来源
    互联网上发布业务,向CA申请证书
    私有CA

二、配置https网站

1、环境规划

manage.linux.com /web/manage
192.168.140.10 nginx服务器
192.168.140.11 私有CA

2、部署私有CA

  • 创建两个数据库文件
[root@ca ~]# touch /etc/pki/CA/index.txt[root@ca ~]# echo 01 > /etc/pki/CA/serial[root@ca ~]# cat /etc/pki/CA/serial
01
  • 创建密钥对
[root@ca ~]# openssl genrsa -out /etc/pki/CA/private/cakey.pem 1024 
Generating RSA private key, 1024 bit long modulus
...++++++
..............++++++
e is 65537 (0x10001)
  • 创建自签证书
[root@ca ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:bj
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:easthome
Organizational Unit Name (eg, section) []:easthome
Common Name (eg, your name or your server's hostname) []:ca.linux.com
Email Address []:

3、部署https的虚拟主机

  • 创建网站的密钥
[root@node01 ~]# mkdir /usr/local/nginx/ssl
[root@node01 ~]# cd /usr/local/nginx/ssl
[root@node01 ssl]# openssl genrsa -out manage.key 1024 
Generating RSA private key, 1024 bit long modulus
....++++++
.......................++++++
e is 65537 (0x10001)[root@node01 ssl]# ls
manage.key
  • 创建证书申请
[root@node01 ssl]# openssl req -new -key manage.key -out manage.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:bj
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:easthome
Organizational Unit Name (eg, section) []:easthome
Common Name (eg, your name or your server's hostname) []:manage.linux.com
Email Address []:bj@qq.comPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
  • 将证书申请发送到CA审核
[root@node01 ssl]# scp manage.csr root@192.168.140.11:/opt/
manage.csr                                                            100%  688   744.6KB/s   00:00    
[root@node01 ssl]# 
  • CA签发证书, 将证书发送回网站服务器
[root@ca ~]# openssl ca -in /opt/manage.csr -out /etc/pki/CA/certs/manage.crt -days 3650 
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 1 (0x1)ValidityNot Before: Oct 29 06:25:54 2024 GMTNot After : Oct 27 06:25:54 2034 GMTSubject:countryName               = cnstateOrProvinceName       = bjorganizationName          = easthomeorganizationalUnitName    = easthomecommonName                = manage.linux.comemailAddress              = bj@qq.comX509v3 extensions:X509v3 Basic Constraints: CA:FALSENetscape Comment: OpenSSL Generated CertificateX509v3 Subject Key Identifier: 6E:90:6A:1B:F0:5F:9D:AD:5E:49:D7:AC:59:CF:BC:6A:AF:7E:44:BFX509v3 Authority Key Identifier: keyid:83:17:3A:29:2A:1C:6A:1E:E4:13:68:85:D1:92:59:3F:E6:34:88:49Certificate is to be certified until Oct 27 06:25:54 2034 GMT (3650 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated[root@ca ~]# cat /etc/pki/CA/serial
02
[root@ca ~]# cat /etc/pki/CA/index.txt
V	341027062554Z		01	unknown	/C=cn/ST=bj/O=easthome/OU=easthome/CN=manage.linux.com/emailAddress=bj@qq.com[root@ca ~]# scp /etc/pki/CA/certs/manage.crt root@192.168.140.10:/usr/local/nginx/sslWarning: Permanently added '192.168.140.10' (ECDSA) to the list of known hosts.
manage.crt                                                            100% 3137     1.4MB/s   00:00   
  • 创建网页目录,测试网页
[root@node01 ~]# mkdir -p /web/manage
[root@node01 ~]# vim /web/manage/index.html
[root@node01 ~]# cat /web/manage/index.html
<h1> web manage </h1>
  • 确认nginx安装了ssl模块
[root@node01 ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.26.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
  • 配置虚拟主机
[root@node01 ~]# cat /usr/local/nginx/conf.d/manage.conf
server {listen       443 ssl;server_name  manage.linux.com;error_log /usr/local/nginx/logs/manage_error.log error;access_log /usr/local/nginx/logs/manage_access.log main;ssl_certificate      /usr/local/nginx/ssl/manage.crt;ssl_certificate_key  /usr/local/nginx/ssl/manage.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {root   /web/manage;index  index.html index.htm;}
}
[root@node01 ~]# vim /usr/local/nginx/conf/nginx.confinclude       /usr/local/nginx/conf.d/manage.conf;
  • 重新加载nginx,测试访问
[root@node01 ~]# /usr/local/nginx/sbin/nginx -s reload[root@node01 ~]# netstat -tunlp | grep nginx
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1029/nginx: master  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1029/nginx: master  

在这里插入图片描述

三、URL重写

1、语法

rewrite   旧uri地址	新uri地址;注意事项: 
1、旧地址不包含请求中的参数
2、旧地址支持正则表达式
3、建议新地址写完整的URL地址,避免循环替换 
  • 需求1:
	rewrite ^/audio  http://blog.linux.com/mp3;
	rewrite ^/audio/(.*)  http://blog.linux.com/mp3/$1;
  • 需求2: 网站换名
	rewrite ^/   https://www.jd.com;

需求3: https自动跳转

       if ($host = manage.linux.com) {rewrite ^/   https://manage.linux.com;}$host:nginx内部变量,用于匹配网站的主机名

四、location的写法

1、语法

 	location [ = | ~ | ~* | ^~ ] uri { ... }

2、location = uri {}

精确匹配

location = /test { }			http://x.y.z/testlocation = / { }					http://x.y.z/
   // 定义错误页面error_page 404 /404.html;location = /404.html {root /web/blog;}

3、location ~ uri { }

以正则表达式的方式匹配请求,区分大小写

location ~ /test { }
http://x.y.z/test/b
http://x.y.z/a/b/test
http://x.y.z/admin/test/person
// 匹配所有图片的请求 
location ~ \.(jpg|jpeg|gif|png)$ { }

4、location ~* uri { }

以正则表达式的方式匹配请求,不区分大小写

location ~* \.php$ { }http://x.y.z/test/index.php
http://x.y.z/test/admin.PHP

5、location ^~ uri { }

不以正则表达式的方式匹配请求

location ^~ /test {}
http://x.y.z./test/ab/c
http://x.y.z/test/logo/admin

5、location的优先级

同一个网站中存在多个location时,一个请求可能 会被多个location同时匹配,按优先级处理

从高到低 
=		^~	~		~* 	location /

五、nginx处理php页面

nginx默认只能处理静态资源,服务器上运行PHP网站,还得需要php软件的支持,同时需要配置nginx通过fastCGI机制能够成功调用php

1、安装php-fpm

[root@node01 ~]# yum install -y php php-fpm [root@node01 ~]# systemctl enable --now php-fpm 
[root@node01 ~]# netstat -tunlp | grep php
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2576/php-fpm: maste 
[root@node01 ~]# 
[root@node01 ~]# ps -elf | grep php  
4 S root       2576      1  0  80   0 - 58155 ep_pol 10:35 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
5 S apache     2577   2576  0  80   0 - 58242 inet_c 10:35 ?        00:00:00 php-fpm: pool www
5 S apache     2578   2576  0  80   0 - 58155 inet_c 10:35 ?        00:00:00 php-fpm: pool www
5 S apache     2579   2576  0  80   0 - 58155 inet_c 10:35 ?        00:00:00 php-fpm: pool www
5 S apache     2580   2576  0  80   0 - 58242 inet_c 10:35 ?        00:00:00 php-fpm: pool www
5 S apache     2581   2576  0  80   0 - 58155 inet_c 10:35 ?        00:00:00 php-fpm: pool www

2、配置nginx调用php

   location ~ \.php$ {root           /web/blog;fastcgi_pass   127.0.0.1:9000;				// 调用php,指定php的IP和端口fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}

3、测试访问php页面

<h1> AAAAAAAAAAAAAAA </h1>
<h2> BBBBBBBBBBBBBBB </h2><?phpphpinfo();echo "<h1>Hello PHP, wmh@@@@@World!</h1>";
?>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【安全解决方案】深入解析:如何通过CDN获取用户真实IP地址

一、业务场景 某大型互联网以及电商公司为了防止客户端获取到真实的ip地址&#xff0c;以及达到保护后端业务服务器不被网站攻击&#xff0c;同时又可以让公安要求留存网站日志和排查违法行为&#xff0c;以及打击犯罪的时候&#xff0c;获取不到真实的ip地址&#xff0c;发现…

4. 日志系统实现

log.h 文件定义了一个单例模式的日志类 Log&#xff0c;用于记录系统日志。 单例设计模式&#xff1a; 主要功能 根据上述分析&#xff0c;这个日志类 Log 主要实现了以下功能&#xff1a; 1. 日志写入 该日志类提供了 write_log() 方法用于将日志内容写入文件。日志内容可以…

【SQL】SQL函数

&#x1f4e2; 前言 函数 是指一段可以直接被另一段程序调用的程序或代码。主要包括了以下4中类型的函数。 字符串函数数值函数日期函数流程函数 &#x1f384; 字符串函数 ⭐ 常用函数 函数 功能 CONCAT(S1,S2,...Sn) 字符串拼接&#xff0c;将S1&#xff0c;S2&#xff0…

论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES

摘要 最近的信息检索研究主要集中在如何从一个任务&#xff08;通常有丰富的监督数据&#xff09;转移到其他各种监督有限的任务上&#xff0c;其隐含的假设是从一个任务可以泛化到所有其他任务。然而&#xff0c;这忽略了这样一个事实&#xff0c;即存在许多多样化和独特的检索…

【MySQL】深入理解隔离性

目录 一、数据库并发的场景 1. 读-读并发 2. 读-写并发 3. 写-写并发 二、多版本并发控制&#xff08; MVCC &#xff09; 2.1.MVCC的核心思想 2.2.MVCC的优势 2.3.MVCC的工作原理 2.4.MVCC的应用场景 三、理解MVCC 3.1. 3个记录隐藏字段 3.2.undo日志 4.快照的概…

目录遍历漏洞

目录遍历 目录 概念漏洞分析 加密型传递参数编码绕过目录限定绕过绕过文件后缀过滤(截断上传原理) 漏洞挖掘 访问图片文件测试时去掉文件名只访问目录路径搜索引擎谷歌关键字 pikachu目录遍历 目录遍历与任意文件下载其实差不多,但是如果目录遍历比如etc/passwd只能看不能下…

GitLab在Linux上的详细部署教程并实现远程代码管理与协作

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 本文主要介绍如何在Linux CentOS8 中搭建GitLab私有仓库并且结合内网穿透工具实现在公网…

LC:贪心题解

文章目录 376. 摆动序列 376. 摆动序列 题目链接&#xff1a;https://leetcode.cn/problems/wiggle-subsequence/description/ 这个题目自己首先想到的是动态规划解题&#xff0c;贪心解法真的非常妙&#xff0c;参考下面题解&#xff1a;https://leetcode.cn/problems/wiggle…

Javaee:阻塞队列和生产者消费者模型

文章目录 什么是阻塞队列java中的主要阻塞队列生产者消费者模型阻塞队列发挥的作用解耦合削峰填谷 模拟实现阻塞队列put方法take方法生产者消费者模型 什么是阻塞队列 阻塞队列是一种支持阻塞操作的队列&#xff0c;在多线程中实现通线程之间的通信协调的特殊队列 java中的主…

Redis特性和应用场景以及安装

目录 Redis特性 1.数据在内存中存储 2.可编程性 3.可拓展性 4.集群 5.高可用 6.持久化 7.主从复制 8.速度快 Redis的应用场景 1.用作数据库 2.用作缓存或保存会话 3.用作消息队列 Redis 不可以做什么 Redis的安装 Redis特性 Redis 之所以受到如此多公司的⻘睐…

如何在VMware中安全地恢复已删除的快照?

在VMware中是否可以恢复已删除的快照&#xff1f; 答案是肯定的&#xff0c;您有几种方法可以尝试恢复被删除的快照文件&#xff1a; 仅删除了快照描述符文件&#xff08;如VMname-000000#.vmdk&#xff09;&#xff1a;这种情况下&#xff0c;可以手动重新创建描述符文件&…

强化学习DQN实践(gymnasium+pytorch)

Pytorch官方教程中有强化学习教程&#xff0c;但是很多中文翻译都太老了&#xff0c;里面的代码也不能跑了 这篇blog按照官方最新教程实现&#xff0c;并加入了一些个人理解 工具 gymnasium&#xff1a;由gym升级而来&#xff0c;官方定义&#xff1a;An API standard for rei…

ubuntu22.04安装向日葵

1、下载deb安装包 进入官网下载图形版本&#xff1a;https://sunlogin.oray.com/download/linux?typepersonal 2、命令行安装 sudo chmod x 文件名.deb sudo dpkg -i 文件名.deb 3、开始报错的看这里&#xff01; 首先展示一下安装成功的效果图&#xff1a; 接下来是我安…

Vuestic 数据表格 使用demo

<template><br><div class"grid sm:grid-cols-3 gap-6 mb-6"><VaButton click"()>{for(const it in this.selectedItems){console.log(this.selectedItems);}}">参数设置</VaButton><VaButton>参数刷新</VaButt…

深入了解 美国高防 CN2 :如何提升全球化业务的网络安全与性能

美国高防 CN2 的重要性 在跨国企业和全球化业务的不断扩展下&#xff0c;对高性能和安全的网络连接需求不断增加。美国高防 CN2&#xff08;Global Internet Access&#xff09;以其卓越的跨境传输效率和强大的防护能力&#xff0c;成为许多企业关注的焦点。尤其是对电商、游戏…

NVR批量管理软件/平台EasyNVR多个NVR同时管理支持视频投放在电视墙上

在当今智能化、数字化的时代&#xff0c;视频监控已经成为各行各业不可或缺的一部分&#xff0c;无论是公共安全、交通管理、企业监控还是智慧城市建设&#xff0c;都离不开高效、稳定的视频监控系统的支持。而在这些应用场景中&#xff0c;将监控视频实时投放到大屏幕电视墙上…

新材料产业数据管理:KPaaS平台的创新驱动

近日&#xff0c;工业和信息化部、财政部、国家数据局联合印发《新材料大数据中心总体建设方案》&#xff08;以下简称《建设方案》&#xff09;&#xff0c;为新材料产业的发展注入了强大动力。该方案规划清晰&#xff0c;目标明确&#xff0c;旨在充分发挥大数据、人工智能对…

AI代币是什么?AI与Web3结合的未来方向在哪里?

近两年随着人工智能的崛起&#xff0c;AI已经渗透到制造业、电商、广告、医药等各个行业&#xff0c;加密货币领域也不例外&#xff0c;人工智能与区块链的融合&#xff0c;让我们看到了独特的数字资产 — AI加密代币。 它的流行始于2022年底&#xff0c;随着OpenAI智能聊天机…

关于springboot跨域与拦截器的问题

今天写代码的时候遇到的一个问题&#xff0c;在添加自己设置的token拦截器之后&#xff0c;报错&#xff1a; “ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:112:14) at Axi…

基于微信小程序实现信阳毛尖茶叶商城系统设计与实现

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…