nginx的简单优化和反向代理

来源:互联网 发布:淘宝偏远地区有哪些 编辑:程序博客网 时间:2024/06/03 19:49

Nginx的特点是:

 

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

 

2、Nginx对网络的依赖比较小;

 

3、Nginx安装和配置比较简单,测试起来比较方便;

 

4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;

 

5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;

 

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

 

7、Nginx能支持http和Email,这样就在适用范围上面小很多;

 

8、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。

 

 

 

 

 

 

nginx

 

三台实验用虚拟机

版本:redhat6.5

IP:172.25.10.1~172.25.10.3 分别是server1~3

server1:|CPU:2 | memory:1024M | seliunx:disabled

server2:|CPU:1 | memory:1024M | seliunx:disabled

server2:|CPU:1 | memory:1024M | seliunx:disabled

实验:

nginx-1.10.1.tar.gz

压缩包传给server1通过tar zxf nginx-1.10.1.tar.gz 进行解压

进入/root/Desktop/nginx-1.10.1目录

编辑auto/cc/gcc 文件将179行注释

178 # debug

179 #CFLAGS="$CFLAGS -g"

编辑src/core/nginx.h 将14行后参数改为"nginx"

#define NGINX_VER          "nginx"

 

两步操作可以curl -I 命令中nginx的版本隐藏

命令./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module 生成Makefile 静态安装 注意空格

生成过程中缺什么安装什么

yum install -y pcre-devel

yum install -y openssl-devel

    ll Makefile

make之前没有/usr/local/lnmp/nginx/目录

切换到 nginx-1.10.1 :      make                             后生成/usr/local/lnmp/nginx/目录

                           make install 安装到系统里

ll -d /usr/local/lnmp/nginx/

进入/usr/local/lnmp/nginx/目录

which   nginx    查看nginx的路径

创建软链接ln -s      /usr/local/lnmp/nginx/sbin/nginx             /usr/local/sbin/

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload

物理机浏览器输入server1  IP  即可显示相关页面

nginx web服务器以搭建好

 

下面做的是nginx服务进程的,限制 ,查看

 

进入/usr/local/lnmp/nginx/conf目录

创建新用户useradd -u 900 -d /usr/local/lnmp/nginx     nginx

编辑nginx.conf文件 将第二行注释删除,将user改成nginx

 user  nginx;

 

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload

ps aux查看nginx进程个数

关闭server1

将虚拟机server1的CPU个数添加为两个

打开虚拟机管理器  点击 processor  cpu添加为2个

重新连接

lscpu查看CPU个数

编辑nginx.conf文件将work_processes 后接参数改为2   

user  nginx;

worker_processes  2;

worker_cpu_affinity 01 10;

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload 【如果出现  nginx: [error] open() "/usr/local/lnmp/nginx/logs/nginx.pid" failed (2: No such file or directory) 则说明nginx没开   直接打:nginx 就开启了】

 

然后  cd /usr/local/sbin

     ll     查看nginx的软连接  

     rm -f nginx  删除 nginx连接

     ln -s /usr/local/lnmp/nginx/sbin/ngin  /usr/local/sbin   重新创建软连接

 

 

 

ulimit  -a  查看当前用户进程限制

 

cd 切换到root/   vim /etc/security/limits. conf

在最后加上 nginx           -  nofile  200  该用户文件限制为200

         nginx           -  nproc   200    该用户进程限制为200

su - nginx  切换到该用户

ulimint  -a  来查看

cd /usr/local/lnmp/nginx/conf/

vim nginx.conf  打开文件修改参数

  

 events {

      use epoll;

    worker_connections  65535; 这里为root的总进程数

}  

 

 

ulimint  -a  来查看

vim nginx.conf  打开文件添加下列参数

 location /status  {

                stub_status on;

                access_log off;

        }

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload

 

切换到物理机浏览器 server1  ip/status   查看进程数

在物理机打   ab -n 5000 -c 500 http://172.25.9.1/index.html

-n 为5000进程   -c  为500个客户端同时发送  【不成功,要在server1 启动nginx】

在看 切换到物理机浏览器 server1  ip   查看进程数

 

下面做的是 nginx 可以用加密协议 https 访问

 

vim nginx.conf  打开文件修改下列参数

  server {

        listen       443 ssl;

        server_name  server1.example.com;

 

        ssl_certificate      cert.pem;

        ssl_certificate_key  cert.pem;

 

        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;

        }

    }

 

去掉注释,并修改为这样 server_name  server1.example.com;  ssl_certificate_key  cert.pem;

 

cd /etc/pki/tls/certs/

make cert.pem  生成这个文件 参数为下

1 CN  2 Shaanxi  3 xi'an 4 westos 5 linux 6 server1.example.com  7 root@server1.example.com

然后  mv cert.pem   /usr/local/lnmp/nginx/conf

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload

打开浏览器输入 https://server1  ip

选择 i unserstand  the risks

 

下面是nginx的反向代理与负载均衡

vim  /usr/local/lnmp/nginx/conf/nginx.conf  添加以下参数

 

server {

        listen       80;

        server_name  www.westos.org;

        location /{

               root  /web1;

               index index.html;

               

        }

}

server {

        listen       80;

        server_name  www.linux.org;

        location /{

                root  /web2;

                index index.html;

        }

}

mkdir  /web1  /web2  建立二根个目录

分别切换到  cd /web1

vim index.html   随便写东西

cd /web2

vim index.html   随便写东西和第一个不一样就行

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload

那台机子访问就:

vim  /etc/hosts  写上ip解析

如:172.25.9.1   server1.example.com  www.westos.org  www.linux.org

打开浏览器就可以访问了 输入网址如:www.westos.org   www.linux.org

 

以上为反向代理,下面为负载均衡

vim  /usr/local/lnmp/nginx/conf/nginx.conf  添加以下

 

 

注释   #root  /web1;

      #index index.html;

 添加  proxy_pass http://westos;  地址转换

 http  {

        upstream  westos  {

 

                server  172.25.9.2:80 ;

                server  172.25.9.3:80 ;

 

        }

}

此为负载均衡模块

查看nginx服务是否配置成功nginx -t

重新加载nginx服务nginx -s reload

打开  server2  server3  的httpd服务

/etc/init.d/httpd  start

然后   for  i  in $(seq 10);do curl www.westos.org; done 进行实验

 

 

 

 

 

 

 

 

阿帕奇和nginx的区别:

1.nginx比阿帕奇快,(进程和线程的区别?)nginx:异步非阻塞机制 阿帕奇:阻塞机制

 

 

原创粉丝点击