正向代理和透明代理主要是上网
反向代理是安全性高、加速作用(访问代理服务器的缓存,有的话直接使用缓存,没有就直接向真实的服务器请求然后将缓存存放在代理服务器里面)
客户端在服务器就是反向代理
squid反向代理使用了acl和http_access
ngix:
nginx简介:和httpd、apache一样都是网页服务
ngix是由俄罗斯人提出的
单线程,高性能,高稳定,编译安装比apache简单
为了解决万集并发c10k
Nginx官网提供了三个类型的版本
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版
我们使用的是1.10.3的版本
start:
useradd -M-s /sbin/nologin -r nginx
useradd -M-s /sbin/nologin nginx是上面那个
将nginx-1.10.3.tar.gz拷贝并解压进入那个目录
yum install-y gcc*
./configure--user=nginx --group=nginx --with-http_stub_status_module
yum install-y pcre-devel报错需要PCRE库
./configure--user=nginx --group=nginx --with-http_stub_status_module
yum install-y zlib-devel报错需要zlib库
./configure--user=nginx --group=nginx --with-http_stub_status_module
make&& make install
cd/usr/local/nginx
ls
cd sbin
ls
ln -s/usr/local/nginx/sbin/nginx /usr/bin
nginx -?{
-t 测试配置文件有没有语法错误
-T测试配置文件,备份并退出
-q测试配置文件时没有错误不输出错误信息
-s 连接信号,给主机发送主进程,nginx stop/quit/reopen重新打开/reload重新加载配置文件
-p prefix设置路径,默认是/usr/local/nginx
-c 加载非默认位置配置文件
-v显示nginx版本
-V查看编译参数,添加模块,删减功能
}
nginx回车启动nginx
netstat-luantp | grep 80查看是否起来了
打开浏览器输入网址为ip即可访问nginx的网页
vim/usr/local/nginx/conf/nginx.conf
nginx -t检测配置文件是否有语法错误
nginx -tq若没有语法错误就不提示
nginx -v
nginx -V版本和编译的参数
nginx -sstop关闭服务
nginx开启服务
vim/usr/local/nginx/conf/nginx.conf这个里面都是以分号结尾
user nginx;使用nginx用户登录
worker_processes1;可以设置为auto,根据cpu数量来设置
错误日志目录是在/usr/local/nginx/log里面
pid
全局块events{worker_connections1024;}:每个进程的最大连接数
events块:
http块:可以嵌套多个server,配置代理,缓存,日志定义等,是否使用sendfile传输文件,连接超时时间,单连接请求数等{
includemime.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"';左边是用curl访问的就记录curl,用http访问的就记录http,右边是如果没有就不记录
log_formattest '$remote_addr : $time_local : $http_user_agent';
声名自定义日志还要去server里面调用access_loglogs/test.access.log test;
nginx -t
nginx -s reload重新加载配置文件
tail -0f /usr/local/nginx/logs/test.access.log
换另一台虚拟机来访问本机使用curl和火狐来访问查看监听状态
老师笔记:自己定义日志:在日志部分写入
http全局块里面写
log_format test '$remote_addr : $time_local : $http_user_agent';
server块里面写
access_log logs/access.log test; #cust:自定义的日志名称
测试自定义日志: # curl 192.168.1.254
#cat /usr/local/nginx/logs/test.access.log
访问的Ip:访问的时间:访问的客户端的类型
tail -0f /usr/local/nginx/logs/test.access.log
$remote_addr 记录客户端的ip
$time_local 记录访问时间(看nginx的时间)
$http_user_agent 记录客户端浏览器的信息
$status 记录请求状态(状态码信息)
$remote_user 记录远程客户端的名字
$request 记录请求的URL或HTTP协议
$body_bytes_sent 记录发送给客户端的文件的内容的大小
$http_referer 记录从哪个页面链接访问过来的
$http_x_forwarded_for 记录客户端的ip
#access_log logs/access.log main;调用刚才起的名字main
sendfile on; #开启高效文件传输模式
server块(配置系你主机的参数,一个http中可以有多个server块){
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
}
location块 /访问的位置(客户端在浏览器输入的是什么)是根,以.php结尾(location ~ \.php$) {
root html;定义根目录,/usr/local/nginx下面的
index index.htmlindex.htm;
error_page404 /50x.html;如果没有找到就显示这页面
location =/50x.html{
root html;
}
}
apache怎样定义日志格式的?
yum install-y httpd
vim /etc/
LogFormat“%h %l ....” combined下面有调用这个combined名字
apache在浏览器里面输入ip会默认进入第一个虚拟主机
虚拟主机:
基于域名的虚拟主机:
start:
vim /usr/local/nginx/conf/nginx.conf
在sever下面添加(试试不修改默认的server直接在下面添加会咋样)
server {
listen 80;
server_name www.163.com;
location / {这个里面的东西等下要去创建(文件夹和网页)
root /163;
index index.html index.htm;第一个单词是索引页
}
}
server {
listen 80;
server_name www.baidu.com;
location / {这个里面的东西等下要去创建(文件夹和网页)
root html/baidu;
index index.html index.htm;索引页
}
}
server {
listen 80;
server_name www.google.com;
location / {这个里面的东西等下要去创建(文件夹和网页)
root html/google;
index index.html index.htm;索引页
}
}
mkdir /163
mkdir/usr/local/nginx/html/google
mkdir /usr/local/nginx/html/baidu
echo 163> /163/index.html
echo baidu> /usr/local/nginx/html/baidu/index.html
echo google> /usr/local/nginx/html/google/index.html
nginx -t
nginx -s stop;nginx重新加载配置文件重启服务
换一台虚拟机:
vim/etc/hosts
添加解析:
nginx主机ip www.baidu.com
nginx主机ip www.google.com
nginx主机ip www.163.com(试一下将左边改为www.1636.com来验证一下server_name的作用,发现没有该域名会访问默认的网页,默认的网页是第一个,如果在listen端口号后面加一个default就变成默认的网页了)
然后访问curl www.baidu.com
curlwww.google.com
curl www.163.com
给服务器发请求的时候要把我们这些包发到里面去
header头文件,在http报文里面
tcpdump抓包工具:
start:
yum install-y tcpdump安装
tcpdump -{
-n不要把主机地址转换成名字,这样看的信息更清晰
-vv显示详细信息
-i网卡
}
tcpdump -n-vv -i ens33 port 80 -w tcpdumpname.dump名字(当前目录下生成该文件)
换一台虚拟机访问本机
curlwww.163.com
curl www.baidu.com
换回nginx机
停止
ll tcpdump看不了,需要安装下面的软件才能打开,还需要图形化界面,没有图形化界面的话就将生成的文件复制到有图形化界面的虚拟机里面去看
yum install-y wireshark-gnome
然后在刚才当前目录下双击打开刚才生成的tcpdumpname
基于IP的虚拟主机:
ifconfig ens33:0 192.168.56.60
ifconfig ens33:1 192.168.56.61这两个只是临时生效的,ifdown ens33;ifupens33之后就没了
共用一张网卡
server {
listen 192.168.56.60:80;使用了套接字
server_name www.baidu.com;
location / {
root html/baidu;
index index.html;
}
server {
listen 192.168.56.61:80;
server_name www.google.com;
location /{
root html/google;
index index.html;
}
}
重启服务发现netstat -luantp | grep nginx没有绑定套接字,nginx -s reload无效,就要先停止,再开启:
nginx -s stop;nginx
切换客户端的虚拟机:curl 192.168.56.60
curl 192.168.56.61
基于端口的虚拟主机:
server {
listen 81;
server_name www.baidu.com;
location / {
root html/baidu;
index index.html;
}
}
server {
listen 82;
server_name www.google.com;
location /{
root html/google;
index index.html;
}
}
重启服务nginx -s stop;nginx
浏览器里面输入域名:端口号来访问:curl 192.168.10.11:81或curl www.baidu.com:81
nginx访问控制:
用户认证:(通过账户和密码)
location / {
root html;
index index.html index.htm;
auth_basic "提示:hehe"; 提示信息(auth是鉴别的意思)
auth_basic_user_file "/usr/local/nginx/passwd.db"; 从哪个位置读取文件
}
yum install -y httpd-tools
[root@web html]# htpasswd -c /usr/local/nginx/passwd.db tom生成用户名和密码,注意-c第一次用一次就行了,以后不要用-c,不然会覆盖之前的
New password: 1
Re-type new password: 1
Adding password for user tom
使用客户端firefox去访问才行,curl无效,注意刷新页面清缓存
访问控制:(通过允许和拒绝)
针对 ip 、网段
location / {
root html;
index index.html index.htm;
allow 192.168.10.0/24;匹配到了就不执行下面的了
deny all;拒绝除了10.0以外的ip
}
使用客户端firefox去访问才行,curl无效,注意刷新页面清缓存
nginx匹配到了就不执行下面的了,而httpd里面的访问控制orderallow,deny是匹配到了还会执行下面的,它是看order的顺序
在http下面设置:
server_tokensoff;访问失败时不显示nginx的版本号
状态访问统计:
在 server中添加如下行
location ~ /status {这个~是匹配的意思
stub_status on;打开状态
access_log off;关掉日志,不要记录到日志里面
}
在域名后面加上一个/status访问
浏览器:http://192.168.10.11/status刷新可得到如下变化结果
Active connections: 557
server accepts handled requests
36573075 36573075 43806112
Reading: 3 Writing: 16 Waiting: 538
Active connections
活动连接数
server accepts handled requests
nginx总共处理了36573075个连接, 成功创建36573075次握手 (相等表示中间没有失败的), 总共处理了43806112个请求 (平均每次握手处理了1.2个数据请求).
Reading
nginx读取到客户端的Header信息数.
Writing
nginx返回给客户端的Header信息数.
Waiting
开启keep-alive的情况下,这个值等于active - (reading +writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接.