零散知识
1.如何查看一个网页是用什么来搭建?
1)打开火狐浏览器,打开一个新页面,摁F12,可以看到出来一个“开发者工具”。然后随便访问一个网站,比如淘宝。
2)点击“开发者工具”中出现的任意一行,右边会出现一个框,有“消息头”之类的信息。
3)查看“”消息头“下面的“响应头”下面的“Server”这一行,就可以看到是用什么服务来搭建的,如Apache,nginx之类。
---------------------------------------------------------------
火狐浏览器新开一个页面,摁F12,然后打开随便一个网站,然后点击框框上面的Network,下面的name可以看到状态码
状态返回码很重要,面试的时候经常问。比如出现404,怎么解决?
404是访问的页面不存在。
常见http状态码:
状态码 功能描述
200 一切正常
301 永久重定向
302 临时重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 文件不存在
414 请求URI头部过长
500 服务器内部错误
502 Bad Gateway
----------------------------------------------------------------------
2.添加eth1
nmcli connection add con-name eth1 ifname eth1 type ethernet
----------------------------------------------------------------
软件的模块化
计算机安全机制(用户):当程序运行时,以对应用户的身份来运行,只给部分权限,以确保安全。哪怕黑客攻击也不怕,反正权限有限。
现在软件基本上都已实现“模块化”。如果100个功能全部安装,占用空间大,性能差,漏洞多。
如果自定义安装,同时也提供默认模块,就会更有优势。
----------------------------------------------------------------
http,nginx:80
ssh:22
mysqll:3306
操作系统:2年一更新
软件:6个月一更新
nginx.10--->nginx.12--->nginx.15
-----------------------------------------------
程序 program 【硬盘】
进程 process 【内存】独立,独占内存比如20M
线程 thread
比如1个进程:3个线程,共占20M
-------------------------------------------------
虚拟主机:基于域名,端口,IP
1台服务器,1个nginx,做出多个网站
www.xx.com 门户
mail.xx.com 邮箱
mall.xx.com 销售
bbs.xx.com 论坛
可以通过“站长工具”来查询一个网站的大概访问量
------------------------------------------------------
http协议【明文】 TCP/IP【http】
认证,并非加密。访问网站,我需要验证一下你的身份。密码也是明文的,如果传输被抓包,别人可以看到明文的密码。
httpd,nginx,tengine,tomcat,jboss
https=http+ssl
https是先加密,再传输。即使被抓包,看到的也是乱码的密码。
---------------------------------------------------------------------
对称加密 如 123 123
非对称加密 如 123 dksngl
----------------------------------------------------------------------
md5sum 文件
md5sum只针对文件的内容进行加密,如果文件内容不变,就算文件名变了,加密后的码也不会变。
# vim 1.txt
# md5sum 1.txt
ba1f2511fc30423bdbb183fe33f3dd0f 1.txt
# mv 1.txt a.txt
# md5sum a.txt
ba1f2511fc30423bdbb183fe33f3dd0f a.txt
# cat a.txt
123
# vim a.txt
# cat a.txt
111
# md5sum a.txt
1181c1834012245d785120e3505ed169 a.txt
# 想看有哪些文件被人改动过了,要在没被人攻击之前就做好这个工作
# vim 1.sh
#!/bin/bash
for i in `ls /etc/*.conf`
do
md5sum $i >> a.log
done
# chmod +x a.log
./a.log
# cat a.log
然后拿2个文件做对比,不过后期会学到diff安全这块会学到,不需要我们自己做对比。
-------------------------------------------------------------------------
LNMP (linux,nginx,mysql,php)
LAMP (linux,apache,mysql,php)
做完nginx只能实现静态网站。动态网站的实现需要(LNMP)
client------------------->web server[a.mp3]
http://192.168.4.5/a.mp3
/usr/local/niginx/html/a.mp3
服务器解释后的结果页面再给客户,就是动态网站。
shell、python、php、C++、C
-----------------------------------------------------------------------
zlib库,有些应用依赖于这个库才能正常运行,因此需要安装zlib,但如果你不自己开发软件并用到zlib库的话,则无需安装zlib-devel库.
-------------------------------------------------------------------------
【美工,前端(html,div+css),后端,测试,运维】
画草图------>外表------>数据------>内测------>搭建给外网访问
-------------------------------------------------------------------------
地址重写(地址栏被重写了)
www.jd.com/?xxxlsidg-=d34d9kdj254162
www.360buy.com------>www.jd.com #京东之前的域名是360buy,改名后如果访问与原链接依然可以正常访问,调转到新链接
http://www.baidu.com->https://
/usr/local/nginx/html/pic/图片
/usr/local/nginx/html/picture/图片 #当你想改链接路径时,客户访问原链接,依然能够被重定向到你新连接那里
-------------------------------------------------------------------------
/a.html---->/b.html
192.168.4.5--------->www.tmooc.cn
192.168.4.5/xx--------->www.tmooc.cn/xx
/usr/local/nginx/html/
【宽屏】电脑
【窄屏】手机
www.baidu.com
一个页面给手机UC
一个页面给电脑IE
----------------------------------------------------------------------------
修改配置文件(实现curl和火狐访问相同链接返回的页面不同)
一个页面给手机firefox
一个页面给电脑curl
firefox http://192.168.4.5/test
curl http://192.168.4.5/test
vim /usr/local/nginx/conf/nginx.conf
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
日志里都有啥?
# cat /usr/local/nginx/logs/access.log
192.168.4.10 - - [30/Oct/2018:16:05:53 +0800] "GET / HTTP/1.1" 401 195 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
192.168.4.10 - tom [30/Oct/2018:16:06:02 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"
-----------------------------------------------------------
Nginx反向代理
proxy是nginx代理,相当于房屋中介(实现调度功能,动态感知健康检查)
web1和web2相当于房东
-------------------------------------------------------------
步骤二:配置upstream服务器集群池属性
1)设置失败次数,超时时间,权重
weight可以设置后台服务器的权重,max_fails可以设置后台服务器的失败次数,fail_timeout可以设置后台服务器的失败超时时间。
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30;
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30;
server 192.168.2.101 down;
}
#weight设置服务器权重值,默认值为1
#max_fails设置最大失败次数
#fail_timeout设置失败超时时间,单位为秒
#down标记服务器已关机,不参与集群调度
.. ..
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://webserver;
}
}
---------------------------------------------------------------------------------------------------
# echo "1.1.1.1" | md5sum
a56bdbb2cc577c3eb01b8575c9241d51 -
1.1.1.1" | md5sum------------>16进制数字%2------>0,1
这对计算来说是一串数字,取余的结果等于0,或者1。
如果是0,给web1。如果是1,给web2。
2台机子就对2取余。
8台机子就对8取余。集群里有多少台工作的机子,就对对应数字取余。
---------------------------------------------------------------------------------------------------
Nginx的TCP/UDP调度器
全局设置
http{
upstream {}
server {}
}
-------------------------------------------------------------------------------------------------------
升级
虚拟主机
https加密
lnmp动态
rewrite地址重写
代理服务器(调度,健康检查)
-----------------------------------------------------------------------------------------------
3)修改Nginx配置文件,定义状态页面
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
… …
location /status {
stub_status on;
#allow IP地址;
#deny IP地址;
}
… …
[root@proxy ~]# nginx
----------------------------------------------------------------------------------------------------
tcp:3次握手,4次断开
http1.0 一次连接一次请求
http1.1 一次连接多次请求
keepalive_timeout 30 #保持这次连接活多久,可以自己调多少秒
-----------------------------------------------------------------------------------------------
# vim /etc/security/limits.conf
.. ..
* soft nofile 100000
* hard nofile 100000
#该配置文件分4列,分别如下:
#用户或组 硬限制或软限制 需要限制的项目 限制的值
------------------------------------------------------------------------------------------------------
1)优化前,使用脚本测试长头部请求是否能获得响应
[root@proxy ~]# cat lnmp_soft/buffer.sh
#!/bin/bash
URL=http://192.168.4.5/index.html?
for i in {1..5000}
do
URL=${URL}v$i=$i
done
curl $URL //经过5000次循环后,生成一个长的URL地址栏
[root@proxy ~]# ./buffer.sh
.. ..
<center><h1>414 Request-URI Too Large</h1></center> //提示头部信息过大
----------------------------------------------------------------------------------------------------------
http:代理
upstream abc {
server 1.1.1.1;
server 2.2.2.2;
}
proxy_pass http://acb;
--with-stream
upstream xxx{
server 1.1.1.1:3306 #只关心IP和协议
server 2.2.2.2:3306
}
proxy_pass xxx;
2.优化
1.自定义报错
error_page 404 /404.html
2.查看状态--with-http_stub_status_module
location xyz {
stub_status on;
}
3,并发量
nginx.conf 1024--->50000
ulimit -Hn -Sn
-----------------------------------------------------------------------------------------
拓展了解
# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
----------------------------------------------------------------------------------------------
SQL 存硬盘。数据关系
noSQL 存内存,非关系(mogondb,redis,memcached)