1. Nginx简介
Nginx是一个开源且高性能,可靠的http中间件,代理服务
2. 常见的Http服务
- httpd apache基金会
- IIS 微软
- GWS google
- Nginx
3. 为什么选择Nginx
- IO多路复用epool
- 轻量级
- cpu亲和
- 把cpu的核心和nginx的工作进程绑定在一起,把每个worker固定在一个cpu的核上执行,较少cpu的切换,获得更好的性能
- sendFile机制
- 在传统的传输静态文件时要经过linux内核的用户空间(User Space)和内核空间(Kernel Space),但是在linux2.2以后引入了零拷贝(不需要经过用户空间直接到达内核空间的技术),nginx就是利用了这一技术
- 静态文件为什么使用sendFile?
- 静态文件其实是不需要经过大量的业务逻辑处理就能直接返回的数据,所以可以不用在用户空间处理,直接在内核空间返回给请求者即可
4. Nginx的安装(源码安装)
-
准备工作
yum -y install gcc gcc-c++ autoconf pcre pcre-devel zlib zlib-devel openssl openssl-devel make automake wget httpd-tools vim
-
下载centeros平台的nginx源码包
nginx-1.12.2.tar.gz
-
解压源码包
tar -zxvf nginx-1.12.2.tar.gz
-
开始安装
[root@node4 /opt/soft/nginx] ./configure --prefix=/opt/nginx #配置安装路径,如果不配置默认安装在/usr/local/ make make install
-
配置环境变量
#配置nginx环境变量 export NGINX_HOME=/opt/nginx export PATH=$PATH:$NGINX_HOME/sbin
-
nginx常用指令
nginx #启动nginx nginx -s stop #停止nginx nginx -s reload #重新加载配置文件
5. nginx对tomcat做反向代理,负载均衡
#user nobody;
#linux进程使用的核数,一般不要大于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 {
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;
#零拷贝 技术
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#定义服务资源池
upstream up{
server node1:8080;
server node2:8080;
server node3:8080;
}
#请求进入到nginx之后首先进行server_name的匹配,匹配上server_name之后开始匹配listen端口
#如果主机名匹配成功,但是端口没有匹配成功,则匹配配置的第一个server的端口(server_name不会匹配)
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server{
listen 80;
server_name node1;
location / {
#把请求转发给资源池的主机,默认的策略是 轮训策略
proxy_pass http://up;
}
}
}