nginx

Nginx与同行Apache都是一种WEB服务器。

Apache的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多有点:稳定、开源、跨平台等等。但是由于它出现的时间太长了。它兴起的年代,互联网产业远比不上现在。所以它被设计为一个重量级的、不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些决定了Apache不是高性能WEB服务器,之后轻量级、高并发的Nginx服务器就应运而生了。

Nginx可以用作高性能的HTTP服务器进行网站的发布处理,同时还可以作为反向代理服务器进行负载均衡的实现。它也是一个IMAP、POP3、SMTP代理服务器。

Nginx使用基于事件驱动架构,使得其可以支持数百万级的TCP连接,高度的模块化和自由软件许可证使的第三方模块层出不穷。

负载均衡

请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。将服务器接收到的请求按照规则分发的过程称为负载均衡。
负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,更多的公司会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。

Nginx支持的负载均衡调度算法方式如下:

    • weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
    • ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
    • fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是Nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。
    • url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意Nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。

nginx命令

./nginx -s reload
nginx -v
nginx -V 包括查看安装的模块
nginx -s stop 立即停止nginx
nginx -s quit 等待到请求被处理完成后停止nginx
nginx 启动nginx

配置nginx

在conf/vhosts下新建一个.conf文件

server {
 listen 80;
 server_name xxx.cn www.xxx.cn;
 index index.html index.htm index.jsp;
 root /xxx/tomcat-7.0.69/webapps/ROOT;
 location ~ .*\.(jsp)?$
 {
 proxy_pass http://127.0.0.1:8080; #主要在这里,设置一个代理
 }
 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 {
 expires 30d;
 }
 location ~ .*\.(js|css)?$
 {
 expires 1h;
 }
 #伪静态规则
 #include /xxx/nginx/conf/rewrite/default.conf;
 access_log /xxx/nginx/access/xxx.log;
 }

要赋予网站文件目录执行权限 简单的可以 chomd 777 -R www目录,否则可能出现页面不正常,在浏览器开发者工具中发现找不到静态资源。但随着前后端分离,jsp已较少使用,tomcat后台只需要提供api,所以基本不需要把访问tomcat整合到nginx中了。

mac中编译安装nginx

下载 http://nginx.org/download/nginx-1.10.2.tar.gz
解压进入目录 ./configure –with-http_auth_request_module
make
sudo make install

手动启动nginx:
sudo /usr/local/nginx/sbin/nginx

ubuntu 中编译安装nginx

下载目录 http://nginx.org/download/
wget http://nginx.org/download/nginx-1.12.0.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip
apt-get update
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
cd nginx-1.9.15
./configure –with-http_ssl_module –with-http_auth_request_module –add-module=../nginx-rtmp-module-master —prefix=/etc/nginx
make
sudo make install
http://blog.csdn.net/longji/article/details/54865358
如果自启动失败,则去修改vi /etc/init.d/nginx,修改其中的路径。

#如果Nginx服务已存在则可以不要make install,否则就是覆盖安装
替换nginx二进制文件:
cp /app/nginx/sbin/nginx /app/nginx/sbin/nginx.bak
cp ./objs/nginx /app/nginx/sbin/

安装后目录介绍
nginx path prefix: “/etc/nginx”
nginx binary file: “/etc/nginx/sbin/nginx”
nginx modules path: “/etc/nginx/modules”
nginx configuration prefix: “/etc/nginx/conf”
nginx configuration file: “/etc/nginx/conf/nginx.conf”
nginx pid file: “/etc/nginx/logs/nginx.pid”
nginx error log file: “/etc/nginx/logs/error.log”
nginx http access log file: “/etc/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”

nginx调优配置

nginx优化 突破十万并发
https://www.cnblogs.com/zhangrumingbj/p/3887693.html

发表评论