Nginx 安装

Ngninx与apache的比较

1.轻量级,同样起web服务,比apache占用更少的内存及资源

2.抗并发,nginx处理请求是异步非阻塞的,而apache是同步阻塞型的,在高并发下nginx能保持低资源低消耗高性能,apache是同步多进程模型,一个连接对应一个进程;nginx是异步,多个连接可以对应一个进程

3.高度模块化的设计,编写模块相对简单

4.nginx处理静态文件好,耗费内存少,一般动态请求要apache去做,nginx适合做静态和反向


nginx服务器:

server1:172.25.44.1

后端服务器:

server2:172.25.44.2 

server3:172.25.44.3

测试真机:

foundation44:172.25.44.250

实验环境:getenforce disabled

          iptableds off

##nginx服务器### 

原码编译

tar zxvf nginx-1.10.1.tar.gz

cd nginx-1.10.1

vim nginx-1.10.1/auto/cc

#CFLAGS=”$CFLAGS -g” (注释掉这行,去掉 debug 模式编译,编译以后程序只有几百 k)

wKioL1fw_DTz4lF6AAAl8b8PdLc492.png

vim nginx-1.10.1/src/core/nginx.h

#define NGINX_VERSION "1.0.2”

#define NGINX_VER "nginx" (修改此行,去掉后面的“NGINX_VERSION”,为了安全,这样编译后外界无法获取程序的版本号)

wKiom1fw_FaDmJWEAAAvp_fWvH4696.png 

1. ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_modul   ###通过prefix制定了安装路径,

yum install pcre-devel -y     ##解决依赖性

yum install openssl-devel -y

2. make && make install          

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin   ####建立软连接,直接将nginx作为系统指令,或在/etc/profile 输入指令

export PATH=$PATH:/usr/local/lnmp/nginx/sbin,保存退出后,刷新source /etc/profile

nginx -t  #检测语法

nginx     #运行 nginx

nginx -s reload   #重载主配置文件

nginx -s stop     #关闭 nginx

若要删除编译:

rm -fr /usr/local/lump/nginx

cd nginx.1.10.1

make clean

cd ..

rm -fr nginx.1.10.1

****nginx.conf 配置文件****

user  nginx;         #######nginx用户

worker_processes  1;  ###工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍于cpu

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;      ##错误日志:存放路径

events {

    worker_connections  1024;    ####工作进程的最大连接数量。尽量大

}

#keepalive_timeout  0;

keepalive_timeout  65; ###keepalive超时时间

upstream westos {

                server 172.25.44.2:80 weight5;

                server 172.25.44.3:80 down;

                #server 127.0.0.1:80 backup;        ##轮询

 

weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

Ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。

backup: 其他所有的非backup机器down或者忙的时候,请求backup机器

server {                                ##虚拟机

        listen       80;               ##监听端口

        server_name  server1.example.com;  ##配置访问域名

        proxy_pass

location /status {

                stub_status on;

                access_log off;      ##设定查看nginx状态的地址

        }

此状态可通过浏览器测试

wKioL1fw_NjArcYRAAAmRg622so618.png

 

1.添加nginx用户

useradd nginx

vim nginx.conf

user  nginx;

worker_processes  2;

nginx -s reload

ps -aux

wKiom1fw_WPQwzUfAABMkcBo1D4194.png 

2.cpu

wKioL1fw_brhn2WvAACdbQOeVkk428.png

vim nginx.conf

worker_processes  2;

worker_cpu_affinity 01 10;   ##cpu32核cpu,开启两个进程 ,01表示启用第一个cpu内核,10表示启用第二个cpu内核worker_cpu_affinity 01 10表示开启两个进程,第一个对应着第一个cpu内核,第二个进程对应着第二个内核。

worker_processes  4;

worker_cpu_affinity  0001 0010 0100 1000;   ##4核cpu,开启4个进程

nginx默认没有开启多核cpu,因此可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,计算最关键的资源,cpu核越多性能就越好。

events {

        use epoll;    ##使用epoll高效工作模式

        worker_connections  4096;

}

3.ssl证书  vim nginx.conf

wKiom1fw_iehAdPkAABVYVAVQw0299.png

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;

     }

 }

生成自签证书

cd /etc/pki/tls/cert

make cert.pem

wKioL1fw_j6i4RmYAAKlOg0DpGQ415.png 

填写信息后将生成的证书移动到编译后的目录中

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

nginx -t   #检测语法

nginx -s reload  ##重新加载

[root@server1 conf]# netstat -antlpe | grep nginx

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      0          10759      1481/nginx          

tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      0          10760      1481/nginx          

在实验机上用浏览器访问https://server1.example.com

wKiom1fw_rySPYHWAAKECbtbRPU335.png 

获取证书

重写网页:

server {

        listen       80;

        server_name  server1.example.com;

    rewrite ^(.*)$ https://$host$1 permanent;

 

或者编写配置文件

vim /usr/local/lnmp/nginx/html/index.html

wKioL1fw_uuAHmE2AACSzsWE2UA017.png

4.配置虚拟主机

wKiom1fw_07z3_TNAADmvj1DY6Y472.png

mkdir /www1

mkdir /www2

vim /www1/index.html

<h1>www.westos.org</h1>

vim /www2/index.html

<h1>bbs.westos.org</h1>

nginx -s reload

实验机将解析做好后,用浏览器访问

www.westos.org

bbs.westos.org

8.配置负载均衡

打开两个后端服务器server2和server3

配置httpd

编写两个后端服务器的apache默认发布目录中的测试文件index.html

/etc/init.d/httpd restart

nginx服务器配置文件

nginx.conf

wKioL1fw_76RJbH9AAAnWfQ_wJ4463.png

http {

                upstream westos {

                server 172.25.44.2:80;

                server 172.25.44.3:80;

}

 

将之前的一个虚拟机更改

wKiom1fw__Gzqi-0AAAu0IhIT3s108.png 

 

server {

        listen 80;

 server_name www.westos.org;

        location / {

        proxy_pass http://westos;

        }

nginx -s reload

配置完成

在实验机上用语句进行测试

[root@foundation44 Desktop]# for i in $(seq 10); do curl www.westos.org;done

<h1>www.westos.org-2</h1>

<h1>www.westos.org-3</h1>

<h1>www.westos.org-2</h1>

<h1>www.westos.org-3</h1>

<h1>www.westos.org-2</h1>

<h1>www.westos.org-3</h1>

<h1>www.westos.org-2</h1>

<h1>www.westos.org-3</h1>

<h1>www.westos.org-2</h1>

<h1>www.westos.org-3</h1>

几种模块举例

(1).连续命中

http {

 

        upstream westos {

                server 172.25.44.2:80 weight=2;

                server 172.25.44.3:80;

}

 

在真机上进行测试

wKioL1fxAA6hPTo3AACHFZoZWAc623.png

 其他几种模式:

(2).http {

 

        upstream westos {

                server 172.25.44.2:80 down;

                server 172.25.44.3:80 backup;

}

 

(3)http {

 

        upstream westos {

                ip_hash;

                server 172.25.44.2:80;

                server 172.25.44.3:80;

}