nginx安装、配置、负责均衡、tomcat的动静分离

nginx下载安装

nginx下载地址:nginx下载地址
安装编译器和依赖库

yum install gcc gcc-c++ zlib-devel pcre-devel openssl-devel openssl-libs openssl -y

配置:

./configure

nginx安装:
到nginx根目录运行 : make && make install
安装完成,接下来配置环境变量以后就不用使用绝对路径来操作Nginx了:

vim /etc/profile.d/http.sh

加入以下内容:

export PATH=/usr/local/nginx/sbin:$PATH

生效配置:

source !$

启动Nginx

nginx -s 后跟stop、reload来关闭和重载nginx,直接运行nginx则启动服务。 如果启动时提示端口被占用,则需要找出被占用的进程,或者更改/usr/local/nginx/conf/nginx.conf文件里的侦听端口。

访问Nginx

在浏览器上输入 http://ip:port 如果出现“Welcome to nginx!”字样,则证明安装成功。如果访问不了,先确认防火墙是否禁止相应端口了。

nginx简单的配置讲解(/usr/local/nginx/ngnix.conf文件)

http{
负载均衡配置;
server配置;
}


      #开启进程数 <=CPU数 
      worker_processes  1;
      #自定义错误日志保存位置,全局设置,默认logs/error.log
      #error_log  logs/error.log;
   #每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024
      events {
          worker_connections  1024;
      }
      #
      http {
          #文件扩展名与文件类型映射表
          include       mime.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"';
          #自定义全局请求日志保存位置,全局设置,默认logs/access.log, 定义格式:文件存储位置 + 日志输出格式
          #access_log  logs/access.log  main;
          #打开发送文件
          sendfile        on;
          #连接超时时间
          #keepalive_timeout  0;
          keepalive_timeout  65;
          #打开gzip压缩
          #gzip  on;
          #配置虚拟主机,基于域名、ip和端口,可以配置多个server
          server {
              #监听端口,可以是ip:port 或者 port
              listen       80;
              #监听域名,可以是ip或者域名,server_name有三种匹配方式:精准匹配(www.domain.com)、通配符匹配(*.domain.com 、www.*)、正则表达式匹配(~^(?.+)\.domain\.com$)
              server_name  localhost;
              #自定义请求日志,局部,当前server有效
              #access_log  logs/host.access.log  main;
              #错误页面及其返回地址
              error_page   500 502 503 504  /50x.html;
              #请求匹配,同样有精准(= /index.html)、模糊(~ index)、正则,允许配置多个location
              location / {
                  #返回根路径地址(相对路径:相对于/usr/local/nginx/)
                  root   html;
                  #默认主页
                  index  index.html index.htm;
              }
              #
              location /html {
                  root   html;
                  index  index.html index.htm;
              }
              #
          }
          #
      }

nginx反向代理、动静分离、负载均衡


#user  nobody;
##最大的工作进程数,一般和CPU的核心数对应
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

##我的给人理解是并发数
events {
    worker_connections  1024;
}


http {
##设定mine类型,类型由mime.type文件定义
    include       mime.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"';

    #access_log  logs/access.log  main;
##nginx调用sendfile函数来输出文件,对于普通应用必须为on。如果用来进行下载磁盘IO重负载应用##可以已设置为off

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
##长链接超时时间,单位秒
    keepalive_timeout  65;

    #gzip  on;
#负载均衡
upstream balance {
#默认轮询,url_hash  根据url均衡   ip_hash  根据ip均衡  least_conn;轮询
# ip_hash;
#ip_hash;
least_conn;
 #weight 值越大,负载权重越大,请求次数越多  
 #max_fails 允许请求失败的次数,超过失败次数后,转发到下一个服务器,当有max_fails个请求失败,就表示后端的服务器不可用,默认为1,将其设置为0可以关闭检查   
#fail_timeout 指定时间内无响应则失败, 在以后的fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器   
#down 表示当前server不参与负载  
#backup 其他非backup server都忙的时候,backup server作为备用服务器,将请求转发到backup服务器   
server 192.168.1.4 weight=1 max_fails=2 fail_timeout=30s;   
server 192.168.1.20:8080 weight=1 max_fails=2 fail_timeout=30s;  
server 127.0.0.1:8081 down;  
#server 192.168.58.152:8080 backup;  


}




##新建站点
    server {
        listen       80;
        server_name  test.com;
 #自定义请求日志,局部,当前server有效  
           #access_log  logs/test.com.log  main;  



        #charset koi8-r;

        #access_log  logs/host.access.log  main;
#静态资源
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { 
#静态资源到nginx服务器下static(具体目录自定义)获取 
root static; 
}

#动态资源
 location ~ \.(jsp|jspx|do|action)(\/.*)?$ { 
#动态请求转发到tomcat服务器,匹配方式可自定义 
#设置真实
proxy_set_header real_ip $remote_addr; #real_ip 设置变量名,可以通过web端获取 
#我这里tomcat的端口为80
#proxy_pass   http://192.168.1.4;
proxy_pass http://balance;  #配置上面添加的负载服务器 
} 

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    server{

listen 80;

return 500;

}


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

负载平衡配置示例

#user nobody;
worker_processes 2;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;


events {
  accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
  multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
  worker_connections 1024;#最大连接数
}


http {
  include    mime.types;#文件扩展名与文件类型映射表,此映射表主要用于部署在本nginx上的静态资源
  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"';

  access_log logs/access.log main;

  sendfile    on;
  #tcp_nopush   on;

  #keepalive_timeout 0;
  keepalive_timeout 65;#连接超时时间

  gzip on;

  #反向代理

  #【配置1】此配置是[配置4]和[配置5]的结合
  #此配置将请求转发到两个WEB服务器,根据客户端IP分配目标主机,同时按权重分配流量
  upstream app1 {
    ip_hash;
    server 192.168.14.132:8080 weight=5;
    server 192.168.14.133:80 weight=3;
  }

  #【配置2】
  #默认负载平衡配置,nginx应用HTTP负载平衡来分发请求。
  #upstream app1 {
  #  server 192.168.14.132:8080;
  #  server 192.168.14.133:80;
  #}

  #【配置3】
  #最小连接负载平衡配置,nginx将尽量不使用繁忙的服务器,而是将新请求分发给不太忙的服务器。
  #upstream app1 {
  #  least_conn;
  #  server 192.168.14.132:8080;
  #  server 192.168.14.133:80;
  #}

  #【配置4】
  #会话持久性配置,使用ip-hash,客户端的IP地址用作散列密钥,
  #以确定应为客户端请求选择服务器组中的哪个服务器。
  #此方法确保来自同一客户端的请求将始终定向到同一服务器,除非此服务器不可用。
  #upstream app1 {
  #  ip_hash;
  #  server 192.168.14.132:8080;
  #  server 192.168.14.133:80;
  #}

  #【配置5】
  #加权负载平衡配置,通过使用服务器权重进一步影响nginx负载平衡算法。
  #未配置权重的服务器,意味着所有指定的服务器被视为对特定负载平衡方法同等资格。
  #upstream app1 {
  #  ip_hash;
  #  server 192.168.14.132:8080 weight=3;
  #  server 192.168.14.133:80 weight=2;
  #  server 192.168.14.134:80;
  #  server 192.168.14.135:80;
  #}


  server {#可配置多个server以监听不同IP和不同端口
    listen    80;#监听的端口
    server_name localhost;#监听的服务器

    #charset koi8-r;

    #access_log logs/host.access.log main;

    #反斜杆代表所有连接,此配置目的是将所有连接交给名为app1的upstream代理,实现负载平衡
    location / {
      proxy_pass http://app1;
    }

    #图片文件路径,一般来说,静态文件会部署在本机以加快响应速度
    #可配置多个这样的location,满足各种需求
    location ~\.(gif|jpg|png)$ {
      root /home/root/images;
    }

    location ~\.(iso|zip|txt|doc|docx)$ {
      root /home/root/files;
    }


    #error_page 404       /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page  500 502 503 504 /50x.html;
    location = /50x.html {
      root  html;
    }


    # FastCGI是CGI全称是“公共网关接口”(Common Gateway Interface)
    #对于我来说,使用Tomcat代替即可,请忽略此配置。
    #location ~ \.php$ {
    #  root      html;
    #  fastcgi_pass  127.0.0.1:9000;
    #  fastcgi_index index.php;
    #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #  include    fastcgi_params;
    #}

    # 添加黑名单,禁止某某访问特定文件
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #  deny all;
    #}
  }


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #  listen    8000;
  #  listen    somename:8080;
  #  server_name somename alias another.alias;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}


  # HTTPS server
  #
  #server {
  #  listen    443 ssl;
  #  server_name localhost;

  #  ssl_certificate   cert.pem;
  #  ssl_certificate_key cert.key;

  #  ssl_session_cache  shared:SSL:1m;
  #  ssl_session_timeout 5m;

  #  ssl_ciphers HIGH:!aNULL:!MD5;
  #  ssl_prefer_server_ciphers on;

  #  location / {
  #    root  html;
  #    index index.html index.htm;
  #  }
  #}

}

最后附上一个获取ip的jsp demo

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Welcome to my demo.jsp</title>
    </head>
    <body>
    欢迎 my demo.jsp<br/>
    访问的 ip 地址:   <%=request.getHeader("real_ip") %> <br/>
    nginx server ip is: <%=request.getRemoteAddr()%>
    </body>
    </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值