20190316

1、配置状态页:
[root@200 html]#vim /apps/nginx/conf/nginx.conf
location = /nginx_status {
stub_status;
}

2、Nginx中设置json格式日志:

vim /apps/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                  ‘$status $body_bytes_sent "$http_referer" ‘
                  ‘"$http_user_agent" "$http_x_forwarded_for"$request_time‘;
log_format  log_json ‘{
  "@timestamp";"$time_local";
  "remote_addr": "$remote_addr";
  "referer": "$http_referer";
  "request": "$request";
  "status": $status";
  "bytes": $body_bytes_sent";
  "agent": "$http_user_agent";
  "x_forwarded": "$http_x_forwarded_for";
  "up_addr": "$upstream_addr";
  "up_host": "$upstream_http_host";
  "up_resp_time": "$upstream_response_time";
  "request_time": "$request_time";
}‘

access_log logs/access.log main json;
重启并访问测试!!!

one、自签名证书
3、单个域名的证书颁发:
1 cd /apps/nginx/conf
2 mkdir certs cd certs/
3 openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt #自签名CA证书
4 openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.magedu.net.key -out www.magedu.net.csr #自制key和csr
5 openssl x509 -req -days 3650 -in www.magedu.net.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.magedu.net.crt #签发证书
6 openssl x509 -in www.magedu.net.crt -noout -text #验证证书内容
7 [root@200 certs]#ll
total 36
-rw-r--r--. 1 root root 2017 Mar 17 20:52 ca.crt
-rw-r--r--. 1 root root 3272 Mar 17 20:52 ca.key
-rw-r--r--. 1 root root 17 Mar 17 21:45 ca.srl
-rw-r--r--. 1 root root 1891 Mar 17 21:45 mobile.magedu.net.crt
-rw-r--r--. 1 root root 1691 Mar 17 21:44 mobile.magedu.net.csr
-rw-r--r--. 1 root root 3272 Mar 17 21:44 mobile.magedu.net.key
-rw-r--r--. 1 root root 1903 Mar 17 20:59 www.magedu.net.crt
-rw-r--r--. 1 root root 1704 Mar 17 20:57 www.magedu.net.csr
-rw-r--r--. 1 root root 3272 Mar 17 20:57 www.magedu.net.key crt与key是配套的
8 [root@200 certs]#vim /apps/nginx/conf/conf.d/pc.conf
server {
listen 80;
listen 443 ssl;
server_name www.magedu.net;
ssl_certificate /apps/nginx/conf/certs/www.magedu.net.crt;
ssl_certificate_key /apps/nginx/certs/www.magedu.net.key;
/apps/nginx/sbin/nginx -t /-s reload
去测试一下:(注:第一次访问有些慢,服务器端把证书发给客户端,客户端生成随机数,把随机数发给服务器,服务器加密后再发给客户端,所以会有延迟) 第二段结束。

3、将mobile web移动端变成https:
[root@200 certs]#vim /apps/nginx/conf/conf.d/mobile.conf
server {
listen 80;
listen 443 ssl;
server_name mobile.magedu.net;
ssl_certificate /apps/nginx/conf/certs/mobile.magedu.net.crt;
ssl_certificate_key /apps/nginx/conf/certs/mobile.magedu.net.key;
在访问网页之前,先在c盘hosts文件中加入“mobile magedu.net”

two、HTTPs功能:
Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
https 实现过程如下:
1.客户端发起HTTPS请求: 客户端访问某个web端的https地址,一般都是443端口
2.服务端的配置:
采用https协议的服务器必须要有一套证书,可以通过一些组织申请,也可以自己制作,目前国内很多网站都自己做的,当你访问一个网站的时候提示证书不可信任就表示证书是自己做的,证书就是一个公钥和私钥匙,就像一把锁和钥匙,正常情况下只有你的钥匙可以打开你的锁,你可以把这个送给别人让他锁住一个箱子,里面放满了钱或秘密,别人不知道里面放了什么而且别人也打不开,只有你的钥匙是可以打开的。
3.传送证书:
服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等等。
4.客户端解析证书:
这部分工作是有客户端完成的,首先会验证公钥的有效性,比如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框提示证书可能存在问题,如果证书没有问题就生成一个随机值,然后用证书对该随机值进行加密,就像2步骤所说把随机值锁起来,不让别人看到。
5.传送4步骤的加密数据:
就是将用证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值进行加密解密了。
6.服务端解密信息:
服务端用私钥解密5步骤加密后的随机值之后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,对称加密就是将信息和私钥通过某种算法混合在一起,这样除非你知道私钥,不然是无法获取其内部的内容,而正好客户端和服务端都知道这个私钥,所以只要机密算法够复杂就可以保证数据的安全性。
7.传输加密后的信息:
服务端将用私钥加密后的数据传递给客户端,在客户端可以被还原出原数据内容。
8.客户端解密信息:
客户端用之前生成的私钥获解密服务端传递过来的数据,由于数据一直是加密得,因此即使第三方获取到数据也无法知道其详细内容。

three、Nginx Rewrite功能:
Nginx服务器利用ngx_http_rewrite_module 模块解析和处理rewrite请求,所以说此功能依靠 PCRE(perlcompatible regularexpression),因此编译之前要安装PCRE库,rewrite是nginx服务器的重要功能之一,用于实现URL的重写,URL的重写是非常有用的功能,比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的链接,就可以设置为访问,另外还可以在一定程度上提高网站的安全性。
rewrite flag :
利用Nginx的rewrite的指令,可以实现url的重新跳转,四种不同的flag:
一、redirect(临时重定向)、 二、permanent(永久重定向)、 :跳转型的flag,是指有客户端浏览器重新对新地址进行请求,三、break 四、last :代理型是在WEB服务器内部实现的跳转。
redirect;#临时重定向,重写完成后以临时重定向方式直接返回重写后生成的新URL给客户端,由客户端重新发起请求;使用相对路径,或者http://或https://开头,状态码:302
permanent;#重写完成后以永久重定向方式直接返回重写后生成的新URL给客户端,由客户端重新发起请求,状态码:301
last;#重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URL启动新一轮重写检查;提前重启新一轮循环,不建议在location中使用
break;#重写完成后停止对当前URL在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环,建议在location中使用

示例:将访问源域名 www.magedu.net 的请求永久重定向到www.magedu.com。
注意:临时重定向不会缓存域名解析记录(A记录),但是永久重定向会缓存,例如:京东早期的域名 www.360buy.com 由于与360公司类似,于是后期永久重定向到了 www.jd.com ,永久重定向会缓存DNS解析记录。
vim /apps/nginx/conf/conf.d/pc.conf
location / {
root /data/nginx/html/pc;
index index.html;
rewrite / http://www.magedu.com permanent;
}
#重启Nginx并访问域名www.magedu.net进行测试:(访问前)

访问后:

临时重定向:域名临时重定向,告诉浏览器域名不是固定重定向到当前目标域名,后期可能随时会更改,因此浏览器不会缓存当前域名的解析记录。
vim /apps/nginx/conf/conf.d/pc.conf
location / {
root /data/nginx/html/pc;
index index.html;
rewrite / http://www.magedu.com redirect;
}
#重启Nginx并访问域名www.magedu.net进行测试:(访问前)

访问后:

rewrite自动跳转https
server {
listen 443 ssl;
listen 80;
ssl_certificate /apps/nginx/certs/www.magedu.net.crt;
ssl_certificate_key /apps/nginx/certs/www.magedu.net.key;
ssl_session_cache shared:sslcache:20m;
ssl_session_timeout 10m;
server_name www.magedu.net;
location / {
root /data/nginx/html/pc;
index index.html;
if ($scheme = http ){ #未加条件判断,会导致死循环
rewrite / https://www.magedu.net permanent;
}
}

[root@200 ~]#vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.18.9.200 www.magedu.net 把该IP加入hosts中,当curl时才会被找到:
[root@200 ~]#curl -L -k -i https://www.magedu.net
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Mon, 18 Mar 2019 14:39:26 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Fri, 15 Mar 2019 10:43:23 GMT
Connection: keep-alive
Keep-Alive: timeout=65
ETag: "5c8b81cb-7"
Accept-Ranges: bytes

pc web

rewrite判断文件是否存在
当用户访问到公司网站的时输入了一个错误的URL,可以将用户重定向至官网首页。 最常用!!!!
location / {
root /data/nginx/html/pc;
index index.html;
if (!-f $request_filename) {
#return 404 "linux35";
rewrite (.*) http://www.magedu.net/index.html;
}
}
#重启Nginx并访问测试:访问前:

访问后跳转:

four、Nginx防盗链
防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,若别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名,

例题:在一个web 站点盗链另一个站点的资源信息,比如图片、视频等
先做盗链再做防盗链:
1、mkdir /data/nginx/html/mageedu
vim /data/nginx/html/mageedu 准备盗链web页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>盗链页面</title>
</head>
<body>
<a href="http://www.magedu.net">测试盗链</a&gt;
<img src="http://www.magedu.net/1.jpg"&gt;
</body>
</html>

2、vim /data/nginx/html/mageedu/index.html 加上这个配置文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>盗链页面</title>
</head>
<body>
<a href="http://www.magedu.net">测试盗链</a&gt;
<img src="http://www.magedu.net/1.jpg"&gt;
</body>
</html>

3、vim /apps/nginx/conf/conf.d/mageedu.conf 定义配置文件
server {
listen 80;
server_name www.mageedu.net;
location / {
index index.html;
root "/data/nginx/html/mageedu";
access_log /apps/nginx/logs/www.mageedu.net.log access_json;
}
}

4、在c盘hosts文件中加入“172.18.9.200 www.mageedu.net” 让互联网能够解析到本主机的地址。
5、访问并测试:

five、Nginx HTTP 反向代理

上图解释:同构:web服务器(nginx)替用户构建请求的资源发往后端,再重新将数据封装发给用户,异构:用户使用http请求来的php页面,nginx无法用tcp向后端转发,tcp就用fastcgi向后端转发,4层负载均衡服务器负责负载,7层负载均衡服务器负责代理,tcp才有负载均衡的功能。
反向代理:也叫reverse proxy,指的是代理外网用户的请求到内部的指定web服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式
gx_http_proxy_module: 将客户端的请求以http协议转发至指定服务器进行处理。
ngx_stream_proxy_module:将客户端的请求以tcp协议转发至指定服务器处理。
ngx_http_fastcgi_module:将客户端对php的请求以fastcgi协议转发至指定服务器处理。

例题:将用户对域www.magedu.net的请求转发至后端服务器处理
环境准备:172.18.9.200 :nginx代理服务器、172.18.9.150 :后端web1 apache部署、172.18.9.100 :后端web2 apache部署
1、100/150主机:yum install httpd -y echo "web1 192.168.7.103" > /var/www/html/index.html systemctl start httpd && systemctl enable httpd
A情况:
location /web {
index index.html;
proxy_pass http://172.18.9.150:80;
#不带斜线将访问的/web,等于访问后端服务器 http://172.18.9.150:80/web/index.html,即后端服务器配置的站点根目录要有web目录才可以被访问,这是一个追加/web到后端服务器http://servername:port/WEB/INDEX.HTML的操作
#重启Nginx测试访问效果:
2、vim /apps/nginx/conf/conf.d/pc.conf
location /web {
index index.html;
proxy_pass http://172.18.9.150:80;
}
/apps/nginx/sbin/nginx -t
[root@200 ~]#/apps/nginx/sbin/nginx -s reload
3、访问测试,因为150主机没有东西,所以显示找不到

B情况:
proxy_pass http://172.18.9.150:80/;
#带斜线,等于访问后端服务器的http://172.18.9.150:80/;内容返回给客户端
访问测试:如下

C情况:
proxy_pass http://172.18.9.150:80; #不带斜线将访问的/web
在150主机:1、cd /var/www/html 2、mkdir web 3、vim web/index.html : test web_page
4、访问测试:

例题:反向代理示例--指定location
1、vim /apps/nginx/conf/conf.d/pc.cpnf
server {
listen 80;
listen 443 ssl;
server_name www.magedu.net;
root /data/nginx/html/pc;
index index.html index.php;
}
location /web {
proxy_pass http://172.18.9.100:80/;
}
/apps/nginx/sbin/ngix -t / -s reload
2、[root@s150 ~]# mkdir /var/www/html/web
[root@s150 ~]# echo "web1 page for apache" > /var/www/html/web/index.html
[root@s100 ~]# mkdir /var/www/html/web
[root@s100 ~]# echo "web2 page for apache" > /var/www/html/web/index.html
3、重启访问测试:
[root@150 ~]#curl http://www.magedu.net/
pc web
[root@·50 ~]#curl http://www.magedu.net/web
web2 172.18.9.100
4、#Apache的访问日志:
[root@100 ~]#tail -f /var/log/httpd/access_log
172.18.140.177 - - 2019-03-20 19:37:25 "GET / HTTP/1.1" 200 13 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
172.18.140.177 - - 2019-03-20 19:37:25 "GET /favicon.ico HTTP/1.1" 404 209 "http://172.18.9.100/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
172.18.9.200 - - 2019-03-20 22:26:51 "GET / HTTP/1.0" 200 18 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
172.18.9.200 - - 2019-03-20 22:28:28 "GET / HTTP/1.0" 200 18 "-" "curl/7.29.0"
172.18.9.200 - - 2019-03-20 22:34:59 "GET / HTTP/1.0" 200 18 "-" "curl/7.29.0" 着条记录说明刚刚访问已被记录在册。

原文地址:https://blog.51cto.com/14128387/2366289

时间: 2024-10-20 05:37:15

20190316的相关文章

20190316 安装pip的一些问题

前提条件: 1. windows环境中安装python3.7 2.注意配置环境变量 确认python.和pip都能直接在cmd 控制台使用, 一个是python命令的地址指向,一个是pip命令的地址指向. 3. 安装:jupyter 命令: pip install jupyter 报错: 命令:python -m pip install --upgrade pip 再报错:(网络不给力,我也没办法) 没办法: 只能到官网下载单个pip文件 命令: 再安装 还有一些安装不了的情况,是因为依赖包没安

纠错20190316

https://www.cnblogs.com/testlife007/p/5702568.html 测试 此处使用的是wmi库,可以去google里面搜索“python wmi” import os, sysimport timeimport wmi,zlib def get_cpu_info() :          tmpdict = {}          tmpdict["CpuCores"] = 0          c = wmi.WMI()#          prin

004 ceph存储池

介绍:前面已经使用deploy和ansble部署了ceph集群,现在对集群的池进行简单介绍和简单操作 一.部分概念 池是ceph存储集群的逻辑分区,用于存储对象 对象存储到池中时,使用CRUSH规则将该对象分配到池中的一个PG,PG根据池的配置和CRUSH算法自动映射一组OSD池中PG数量对性能有重要影响.通常而言,池应当配置为每个OSD包含的100-200个归置组 创建池时.ceph会检查每个OSD的PG数量是否会超过200.如果超过,ceph不会创建这个池.ceph3.0安装时不创建存储池.

linux基础整理0316

一.linux基础整理 由于这是学习linux的第一周,整理的东西很杂很分散,其中包括了查看虚拟机的各种信息,命令相关的只整理了alias.date.history.cal.帮助会话screen等命令的使用,最后加上了两个常见问题处理办法:在以后的学习中会不断完善文中整理的相关内容. 1.查看系统信息类命令: 查看内核版本 [root@CentOS7 ~]#uname -r 3.10.0-957.el7.x86_64 查看系统版本 查看配置文件 [root@CentOS7 ~]#cat /etc

Bootstrap3基础 栅格系统 标尺(col-lg/md/sm/xs-1)

? 内容 参数 ??OS ??Windows 10 x64 ??browser ??Firefox 65.0.2 ??framework?? ??Bootstrap 3.3.7 ??editor ??Visual Studio Code 1.32.1?? ??typesetting ??Markdown ? code <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="U

编写脚本 systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址, 操作系统版本

#!/bin/bash # #******************************************************************** #Author: QH #QQ: 1625317303 #Date: 2019-03-16 #FileName: sysinfo.sh #Mail: 1625317303@qq.com #Description: The test script #Copyright (C): 2019 All rights reserved #*

zabbix全网监控

为什么要监控 运维的职责1.保障企业数据的安全可靠.2.为客户提供7*24小时服务.3.不断提升用户的体验. 在关键时刻,提前提醒我们服务器要出问题了 当出问题之后,可以便于找到问题的根源 拿到公司服务器的管理权之后, 第一件事,备份 第二件事,监控 数据有故障了,服务有问题了,一些内容挂掉了,比如web服务器,或者是硬件的服务器,raid,磁盘有故障了也会报警,用户访问网站,感觉慢了,也可以获得相应的提示 这是一个非常重要的部分 你们公司监控是怎么做的-面试题 OSI/ISO7层协议进行回答

SpringJPA主键生成采用自定义ID,自定义ID采用年月日时间格式

自定义主键生成策略 在entity类上添加注解 @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom-id") @GenericGenerator(name = "custom-id", strategy = "com.h5page-mapdiy.utils.CustomIDGenerator") @Column(name = "id")

用python自制微信机器人,定时发送天气预报

0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是wxpy库的简介: wxpy基于itchat,使用了 Web 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计.微信公众号.微信好友.微信群基本信息获取等功能. 废话不多说,代码写起来. 1 环境 操作系统:Windows / Li