Nginx负载均衡,反向代理

7层网络负载均衡

负载均衡
用户认证访问
反向代理

安装Tengine
官网下载,linux安装
安装c语言编译器GCC
yum install gcc openssl-devel pcre-devel zlib-devel -y

解压缩
tar -zxvf tengine
进入目录
./configure --prefix=/usr/local/tengine
安装
make && make install
进入安装目录/usr/local/tengine
sbin可执行程序
./nginx

停掉服务
ps-ef |grep nginx
kill -9 3988
kill -9 3987

启动脚本

解析配置文件

worker_processes 1 进程数1
events事件
worker_connections 1024 1个woker对应得连接数1024
cat /proc/sys/fs/file-max 查看系统打开文件句柄得最大个数,对应上面得1024

http模块

include 引入配置文件
default_type 引入文件类型
sendfile on 文件传输得异步执行,异步网络io,生产数据太快解析不过来就off
keepalive_timeout 65 连接超时
gzip 压缩
server模板,一个server对应一个主机
listen 80; 监听端口号
server_name localhost 主机名,域名
location /{ 虚拟目录 / 是匹配规则
root html; 跟目录
index index.html index.htm; 默认网页
}
location = / {
[ configuration A ]
}

location / {
[ configuration B ]
}

location /documents/ {
[ configuration C ]
}

location ^~ /images/ {
[ configuration D ]
}

location ~* .(gif|jpg|jpeg)$ {
[ configuration E ]
}

反向代理服务器:

Proxy_pass http://192.168.43.152/
用户认证访问
模块ngx_http_auth_basic_module 允许使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问。
location ~ (.*).avi$ {
auth_basic “closed site”;
auth_basic_user_file conf/users;
}

httpd-tools
yum install httpd

htpasswd -c -d /usr/local/users zhangyang

nginx访问状态监控
location /basic_status {
stub_status on;
}

upstream
反向代理配合upstream使用
upstream httpds {
server 192.168.43.152:80;
server 192.168.43.153:80;
}

weight(权重)
upstream httpds {
server 127.0.0.1:8050 weight=10 down;
server 127.0.0.1:8060 weight=1;
server 127.0.0.1:8060 weight=1 backup;
}

down:表示当前的server暂时不参与负载
weight:默认为1.weight越大,负载的权重就越大。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
max_conns
可以根据服务的好坏来设置最大连接数,防止挂掉,比如1000,我们可以设置800

upstream tomcats{
server 127.0.0.1:8050 weight=5 max_conns=800;
server 127.0.0.1:8060 weight=1;
}

max_fails、 fail_timeout
max_fails:失败多少次 认为主机已挂掉则,踢出,公司资源少的话一般设置2~3次,多的话设置1次
max_fails=3 fail_timeout=30s代表在30秒内请求某一应用失败3次,认为该应用宕机,后等待30秒,这期间内不会再把新请求发送到宕机应用,而是直接发到正常的那一台,时间到后再有请求进来继续尝试连接宕机应用且仅尝试1次,如果还是失败,则继续等待30秒…以此循环,直到恢复。
upstream httpds {
server 127.0.0.1:8050 weight=1 max_fails=1 fail_timeout=20;
server 127.0.0.1:8060 weight=1;
}

http_proxy 本地磁盘缓存
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
     set $upstream http://ip:port
          location / {
                   proxy_cache my_cache;
                   proxy_pass $upstream;
}
}

 /path/to/cache #本地路径,用来设置Nginx缓存资源的存放地址
 levels #默认所有缓存文件都放在同一个/path/to/cache下,但是会影响缓存的性能,因此通常会在/path/to/cache下面建立子目录用来分别存放不同的文件。假设levels=1:2,Nginx为将要缓存的资源生成的key为f4cd0fbc769e94925ec5540b6a4136d0,那么key的最后一位0,以及倒数第2-3位6d作为两级的子目录,也就是该资源最终会被缓存到/path/to/cache/0/6d目录中
 key_zone #在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key
 max_size #最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的cache文件
 inactive #未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件
 use_temp_path #如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝
 proxy_cache #启用proxy cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存。

session共享

Memcached
安装
安装libevent
安装memcached
可以用yum方式安装 yum –y install memcached
启动memcached
memcached -d -m 128 -u root -l 192.168.43.151 -p 11211 -c 256 -P /tmp/memcached.pid
memcached-tool 192.168.2.51:11211
参数解释:
-d:后台启动服务
-m:缓存大小
-p:端口
-l:IP
-P:服务器启动后的系统进程ID,存储的文件
-u:服务器启动是以哪个用户名作为管理用户

自动索引
location /art {
alias /var/data/www1/;
autoindex on;

}

动静分离

  location / {
	proxy_pass http://192.168.150.11:803;

    }

 
 
 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|htm|css|js)$ {
        root  /var/data/www1/;
       
    }

非对称加密 AES

私钥加密,公钥解密
把解密算法和数据传给客户端

https: 80端口传输数据
443端口传输证书

数据是有服务器公钥保证安全的,
服务器的公钥是由CA 保证安全的
CA保证ca的公钥不在传输过程中被串改

OPenSSL 自签名

certmgr.msc
key 私钥 = 明文 自己生成的
csr 公钥 = 由私钥生成
crt 证书 = 公钥 + 签名
下载
http://slproweb.com/products/Win32OpenSSL.html
生成私钥
genrsa
制台输入 genrsa,会默认生成一个 2048 位的私钥
openssl genrsa -des3 -out server.key 1024
由私钥生成公钥
openssl req -new -key c:/dev/my.key -out c:/dev/my.csr
openssl req -new -key server.key -out server.csr
查看证书
Common Name,这里输入的域名即为我们要使用 HTTPS 访问的域名
req -text -in c:/dev/my.csr -noout
openssl rsa -in server.key -out server.key.unsecure

数字签名

数字签名验证发送者的身份和消息的完整性

数字证书

数字证书是由第三方CA机构颁发的,保证消息没有被篡改

你可能感兴趣的:(nginx)