nginx简介
Nginx的概念:Nginx (“engine x”) 是一个高性能的HTTP(静态资源)和反向代理服务器,也是一个电子邮件(IMAP/POP3/SMTP)服务器。
Nginx的特点:
Nginx 可以在大多数 Unix、Linux OS 上编译运行,并有 Windows 移植版
支持高并发操作,实现负载均衡
正向代理和反向代理的区别:
linux下安装nginx
环境要求
nginx是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
gcc:yum install gcc-c++
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
PCRE:yum install -y pcre pcre-devel
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
zlib:yum install -y zlib zlib-devel
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
openssl:yum install -y openssl openssl-devel
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
编译及安装
第一步:把nginx的源码包上传至linux服务器
第二步:解压源码包。 tar -zxvf nginx-1.8.0.tar.gz
注意:下边第三步设置的参数是将临时文件目录指定为/var/temp/nginx,所以需要先在/var下创建temp及nginx目录
看到了nginx就说明目录创建好了。
第三步:进入nginx-1.8.0文件夹。使用configure命令创建makefile,同时参数设置如下:
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi
–with-http_ssl_module
最后一个加粗的模块非常重要,支持https如果没有会在配置SSL证书提示错误,需要重新编译
第四步:make
第五步 make install
以上操作完成后,进入/usr/local/nginx目录
conf它里面装入的是nginx相关的配置文件
html目录 它里面装入的html代码
sbin目录它里面有一个nginx
想要启动nginx只需要执行bin目录下的nginx命令就可以
Nginx服务在启动时会启动两个服务
Nginx常用命令
关闭nginx需要在sbin目录下使用:./nginx -s stop 相当于找到nginx进程kill。
退出命令:./nginx -s quit等程序执行完毕后关闭,建议使用此命令。
重新加载配置文件:./nginx -s reload 可以不关闭nginx的情况下更新配置文件.
检测配置文件是否正确:./nginx -t
nginx配置静态资源
listen:表示当前的代理服务器监听的端口,默认的是监听80端口(如果该网站未备案,一般不使用80端口)。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。
server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地(一般是本地/etc/hosts目录配置的域名,域名指向ip,一个ip可以配置多个域名)
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。
index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
nginx配置SSL证书
配置SSL证书,需要https模块支持,并且网站通过ICP备案,开通443/80端口
nginx配置负载均衡
所谓的负载均衡简单说就是将一台服务原来承受的压力由多台服务器来分配,可以在nginx中实现tomcat集群,通过weight来分配权重。
upstream代表上游,负责负载均衡,根据配置server拦截请求,upstream对配置的上游服务器按照默认的轮询方式进行请求。如果上游服务器挂掉,能自己主动剔除,无需手动干预。这种方式简单快捷
suntray为自定义名称
server可配置多个不同的ip和端口(访问实际地址)
weight代表轮询权重(负载均衡权重,值越大约优先)
#user nobody;
worker_processes 1; #配置nginx进程数
#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; #配置nginx线程数(并发处理量)
}
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;
#解决跨域问题
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
sendfile on;
#tcp_nopush on;
#连接超时时间 65秒无连接则访问超时
#keepalive_timeout 0;
keepalive_timeout 65;
#是否开启gzip压缩
#gzip on;
#配置负载均衡
upstream suntray{
#服务器 ip+端口(tomcat端口) weight:权重
server 192.168.2.71:8080 weight=5;
server 192.168.2.71:8081 weight=5;
}
server{
#监听80端口(请求访问端口)
listen 80;
underscores_in_headers on;
#配置本地http域名 需要在linux /etc/hosts目录添加域名 ip 域名
server_name www.???.com;
client_max_body_size 1000m;
fastcgi_connect_timeout 75;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
keepalive_timeout 600;
proxy_connect_timeout 600;
proxy_read_timeout 600;
#访问地址拦截 /拦截所有请求
location / {
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
#配置请求转发地址 转发到负载均衡配置找到server
proxy_pass http://suntray;
}
}
}