nginx的安装和启动
  1. 下载nginx的tar包, 并解压;
  2. 执行configure命令;
  3. 执行make && make install命令;
  4. 在安装目录的sbin目录下, 执行./nginx命令启动(注意关闭防火墙)
  5. 访问主机ip即可看到页面
  6. 使用./nginx -s reload重新启动, ./nginx -s stop停止;
简单的代理配置
location / {
        #    root   html;
        #    index  index.html index.htm;
             proxy_pass http://192.168.1.6:8081;
        }
一些其他的配置
传给被代理服务器参数
1. proxy_set_header Host $host; #代理主机地址
2. proxy_set_header X-Real-IP $remote_addr; #远程请求地址
3. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #所有代理机器地址
4. proxy_connect_timeout 10ms; #访问超时时间
负载均衡配置
配置
upstream tomcat {
    server 192.168.1.6:8080;
    server 192.168.1.10:8080;
}

location / {
     #root  html;
     #index index.html index.htm;
     proxy_pass http://tomcat;
}

可以对以上进行设置
server 192.168.1.6:8080 max_fails=2 fail_timeout=60s;
表示: 访问失败后重试两次, 之后60s内不再访问;
负载均衡的算法
  • 轮询算法: 后端宕机后会自动退出轮询, 不被轮询, 上面的配置;
  • ip_hash: 根据IP地址进行hash, 相同的地址会发送到相同的服务上;
upstream tomcat {
    ip_hash;
    server 192.168.1.6:8080;
    server 192.168.1.10:8080;
}
  • 权重: 根据权重不同访问代理服务器;
server 192.168.1.6:8080 weight=1
nginx动静分离
静态资源配置
location - .*\.(js|css|png|jpg){
    root static-resource;
    expire 1d; #添加缓存
}
压缩
支持Gzip压缩, 在http中配置
gzip on; #打开压缩
gzip_min_length 5k; #申请的缓存空间
gzip_comp_level 3; #压缩的等级
gzip_types application/javascript image/jpeg; # 压缩的资源类型
gzip_buffers 4 32k; #表示以4*32k单位获取;
gzip_vary on; #启用应答头"Vary: Accept-Encoding"
防盗链
保证资源只能被当前服务访问, 防止被其他服务使用, 产生额外的流量;
location - .*\.(js|css|png|jpg){
    valid_referers none block 192.168.1.10; #表示只能10服务访问
    if($invalid_referer) {
        return 404;
    }
    root static-resource;
    expire 1d; #添加缓存
}
跨域访问
什么是跨域访问: 比如有两台服务器10和11, 10的请求要去访问11的api, 这就是跨域访问, 按常理来说这是可以访问的, 但是浏览器设置了不能进行跨域访问, 这是浏览器行为, 因此现在流行的前后端分离要解决跨域访问问题才能实现;

配置:

location / {
     #root  html;
     #index index.html index.htm;
     proxy_pass http://tomcat;
     add_header 'Access-Control-Allow-Origin' '*'; #允许所有的服务
     add_header 'Access-Control-Allow-Methods' 'GET,POST,DELETE'; #允许的方法类型
     add_header 'Access-Control-Allow-Header' 'Content-Type,*'; #允许访问的资源
}
日志处理
http里面
日志格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent" "$http_x_forwarded_for"';
access_log  logs/access.log  main; #默认存储地址
sendfile    on;
Nginx的线程模型(待补充)
使用的是多进程+多路复用机制
nginx高可用方案
  • 使用keepalive+nginx方式, 解决单点故障问题(master和backup);
两个节点只有master可以使用, 如果master挂掉, 则启动备机
  • keepalived安装
1. 下载tar包, 解压;
2. 使用该命令安装./configure --prefix=/usr/local/keepalive/ --sysconf=/etc
3. make && make install
4. cp /usr/local/keepalive/keepalived/keepalived/etc/init.d/keepalived /etc/init.d #设置开机启动
5. chkconfig --add keepalived
6. service keepalived start|stop|status #使用三种命令开启|停止|检查状态
7. 配置文件路径:/keepalived/keepalived/etc/keepalived
配置: 只需要配置virtual_ipaddress(虚拟ip)和virtual_server(虚拟ip), real_server的ip即可
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.200.16
        }
    }

    virtual_server 192.168.200.16 80 {
        delay_loop 6
        lb_algo rr
        lb_kind NAT
        persistence_timeout 50
        protocol TCP

        real_server 192.168.1.10 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                retry 3
                delay_before_retry 3
            }
        }
    }
    备用机配置, 只要将real_server修改为备用机ip, state修改为BACKUP即可;
8. 配置脚本: 
    vrrp_instance VI_1上面
    vrrp_script nginx_status_process {
        script "脚本路径"
        user root
        interval 3
    }
    
    vrrp_instance VI_1内
    track_script {
        nginx_status_process
    }
9. 脚本内容
    #!bin/sh
    A = 'ps -C nginx --no-header |wc -l' #检查nginx的命令
    if [ $A -eq 0 ]
        then
            service keepalived stop
    fi    
10. service keepalived restart
Openresty

就是nginx+lua脚本, 安装方法和nginx相同, 内置了nginx, 可以使用来做网关;

hello world
location / {
    default_type text/html;
    content_by_lua_block {
        ngx.say('hello world');
    }
}
启动nginx访问即可
HTTPS请求的配置
获取证书
# 创建服务器私钥
openssl genrsa -des3 -out server.key 1024
# 创建签名请求的证书(csr); csr核心内容是一个公钥
openssl req -new -key server.key -out server.csr
# 去除使用私钥是的口令验证
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
# 标记证书使用私钥和csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#配置文件
server {
    listen 80;
    server_name localhost;
    ssl on;
    ssl_certificate /crt文件路径;
    ssl_certificate_key /server.key文件路径;
    location / {
        ...
    }
}

红番茄
7 声望2 粉丝

« 上一篇
Netty笔记
下一篇 »
Zookeeper笔记