nginx配置说明

  1. 安装nginx
  2. 修改nginx配置文件
    server
    {
        #转发端口
        listen 8002;
        #转发域名
        server_name localhost;
        #转发路径
        location / {
            #转发头缓存大小
            proxy_buffer_size 64k;
            proxy_buffers   32 32k;
            proxy_busy_buffers_size 128k;
            #被转发ip,端口隐藏
            proxy_redirect http://xxx.xxx.xxx/ http://blog.emengtt.com/;
            #被转发地址
            proxy_pass   http://xx.xxx.xxx/;
            }
        #日志
        access_log logs/show.log;
    }
    
  3. 基本操作

    windows
    开始 nginx.exe
    停止 nginx.exe -s stop
    重新加载配置文件启动 nginx.exe -s reload
    linux
    开始 nginx
    停止 nginx -s stop
    重新加载配置文件启动 nginx -s reload
    注: 可能需要管理员权限

  4. nginx 设置最大文件设置

    client_max_body_size 20M;

  5. nginx 设置超时时间
    > proxy_connect_timeout 600s;
    > proxy_send_timeout 600s;
    > proxy_read_timeout 600s;

编译安装nginx并配置负载均衡

  1. 下载安装nginx
  2. 解压nginx tar -zxvf nginx-1.11.6.tar.gz
  3. 进入解压目录执行./configure(非阿里云需要自己安装gcc编译程序yum install gcc-c++
  4. 查看缺少的组件一般缺少(pcre,pcre-devel,zlib,zlib-devel,openssl ,openssl-devel)
    安装示例:yum install -y openssl openssl-devel(阿里云上的安装方式)
    或者源码编译安装,安装示例:

    ./configure --prefix=/usr/local/nginx --with-zlib=../zlib-1.2.8 --with-pcre=../pcre-8.36   
    make    
    sudo make install
    #如果新加模块
    ./configure –add-module=/data/software/ngx_http_google_filter_module
    make 自动替换原来的nginx二进制
    #查看已经编译的模块 V是大写的
    nginx -V 
    
  5. 默认安装位置
      nginx path prefix: "/usr/local/nginx"
      nginx binary file: "/usr/local/nginx/sbin/nginx"
      nginx modules path: "/usr/local/nginx/modules"
      nginx configuration prefix: "/usr/local/nginx/conf"
      nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
      nginx pid file: "/usr/local/nginx/logs/nginx.pid"
      nginx error log file: "/usr/local/nginx/logs/error.log"
      nginx http access log file: "/usr/local/nginx/logs/access.log"
      nginx http client request body temporary files: "client_body_temp"
      nginx http proxy temporary files: "proxy_temp"
      nginx http fastcgi temporary files: "fastcgi_temp"
      nginx http uwsgi temporary files: "uwsgi_temp"
      nginx http scgi temporary files: "scgi_temp"
    
  6. nginx 的负载均衡
      upstream  mis-tomcat { 
         #负载均衡配置为轮换分配
         #round-robin;
         #负载均衡配置为哪个链接少就分配到哪个
         #least_connected;
         # 集群mistomcat 配置
         # weight 权重相同 
         # max_fails 最大失败次数 
         # fail_timeout 每次超过最大失败次数停用时间
         # backup 所有其他服务器都挂了的话backup生效
         # down 服务器不启用
         # resolve 指定域名解析服务
         server 10.168.1.218:9080  weight=1 max_fails=1 fail_timeout=10;  
         server 10.168.1.218:10080 weight=1;
         server 10.168.1.219:8080 backup down resolve
         #负载均衡配置为根据ip值绑定,但是服务器不可用就会切换机器
         ip_hash; 
      }
    
  7. nginx 的session共享
    • 使用cookie储存session(代码部分配置和修改)(而且不安全cookie会被伪造)
    • 使用数据库储存session (代码改动)(加大了数据库负担,切同步时间较慢)
    • 使用memcache或redis (代码改动)(速度快,但是有内存压力,内存不足会溢出)
    • nginx的ip_hash (nginx改动) (使用ip做hash来分配用户到固定机器)
      >有3个弊端:
      nginx服务器要在最前端能够获取真实ip,
      nginx分发之后不能再次分发否则session不起作用,
      如果大量用户在同一局域网访问负载均衡失效
    • upstream_hash (nginx改动)(第三方模块)(和ip_hash差不多只是更改做hash的参数)
  8. 参考链接

    nginx在linux上的编译安装
    ngxin在mac上的编译安装
    nginx常用配置
    nginx+tomcat负载均衡配置
    nginx负载均衡一致性哈希
    nginx负载均衡配置
    nginx和apache的比较
    nginx的session共享问题