Nginx源码安装,简单配置

 2016年12月31日 19:57   Nick王   运维    2 评论   532 浏览 

一句话介绍

Nginx是一款高性能的HTTP和反向代理服务器。Nginx能够选择高效的epoll(linux2.6内核)作为网络I/O模型,在高并发的情况下,能够支持高达数万个并发连接数的响应


编译安装


依赖包安装

首先要安装pcre和openssl  

note :模块依赖性,Nginx的rewrite模块需要pcre库,ssl功能需要openssl,gzip压缩需要zlib库,图片过滤需要gd库

# yum install pcre* openssl* gd* zlib* -y


创建账号,如果不指定账号,nginx进程将默认使用nobody用户

# useradd -s /sbin/nologin -M web


下载Nginx源码包

# wget http://nginx.org/download/nginx-1.8.1.tar.gz

下载ngx cache purge模块(ngx_cache_purge是nginx模块,用于从FastCGI、proxy、SCGI 和uWSGI缓存中增加内容清除功能。第三方模块。)

# git clone https://github.com/FRiCKLE/ngx_cache_purge.git

下载nginx_upstream_check_module模块(nginx_upstream_check_module这个模块可以用来实时监控后端服务器的状态。nginx_upstream_check_module来检测后方realserver的健康状态,如果后端服务器不可用,则所以的请求不转发到这台服务器。第三方模块,淘宝开发)

# git clone https://github.com/yaoweibin/nginx_upstream_check_module.git

隐藏版本

# vim nginx-1.8.1/src/core/nginx.h
……省略部分……
#define NGINX_VERSION      "1.0"
#define NGINX_VER          "iBash WS/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "iBash WS"

给Nginx打nginx_upstream_check_module模块补丁

# cd nginx-1.8.1/
# patch -p1 < ../nginx_upstream_check_module/check_1.7.5+.patch (根据Nginx的版本选择补丁)

编译安装Nginx

# ./configure --prefix=/usr/local/nginx --user=web --group=web --with-http_ssl_module --with-http_realip_module --with-pcre --with-http_gzip_static_module --with-http_stub_status_module --with-http_spdy_module --add-module=../ngx_cache_purge --add-module=../nginx_upstream_check_module
# make && make install
# echo $?

解释:

--with-http_ssl_module 启用SSL  

--with-http_realip_module 启用获取真实IP的模块  

--with-pcre 启用PCRE  

--with-http_gzip_static_module 启用静态压缩  

--with-http_stub_status_module 开始 server status 页面  

--with-http_spdy_module 只是spdy,spdy是对http的增强,引入后,页面加载速度比原先快60% 


启动Nginx

# ./sbin/nginx 
# ss -lntup|grep 80
tcp    LISTEN     0      128                    *:80                    *:*      users:(("nginx",23412,6),("nginx",23413,6))

在浏览器输入服务器的IP地址打开网站验证Nginx是否正常工作(记得关闭防火墙,SeLinux)


关于Nginx的一些常用命令


关闭Nginx

# ./sbin/nginx -s stop
# ss -lntup|grep 80

重启Nginx

# ./sbin/nginx -s reload

从容停止Nginx

# kill - QUIT `cat /usr/local/nginx/logs/nginx.pid`

快速停止Nginx

# kill - TERM `cat /usr/local/nginx/logs/nginx.pid`

强制停止所有Nginx进程

# pkill -9 nginx

平滑重启Nginx

# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

重新打开日志文件(主要用于切割日志)

# kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

测试配置文件语法

# ./sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


配置Nginx


虚拟主机配置,这里设置两个虚拟主机,分别是a.com 和 b.com

# vim conf/nginx.conf
user  web;
worker_processes  1;
error_log  logs/error.log  notice;
pid        logs/nginx.pid;
events {
    use epoll;
    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"';
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;
    gzip_min_length 4k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 3;
    gzip_types      text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    include ./conf.d/*.conf;
}

# mkdir conf/conf.d
# vim conf/conf.d/a.com.conf
server {
    listen       80;
    server_name  a.com;
    index  index.html index.htm;
    charset utf-8;
    access_log  logs/a.com.access.log  main;
    location / {
        root   /data/a.com;
    }
    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

# vim conf/conf.d/b.com.conf
server {
    listen       80;
    server_name  b.com;
    index  index.html index.htm;
    charset utf-8;
    access_log  logs/b.com.access.log  main;
    location / {
        root   /data/b.com;
    }
    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

平滑重启Nginx

# ./sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# ./sbin/nginx -s reload
# ss -lntup|grep 80

创建网站根目录,并创建测试网页,要注意权限

# mkdir /data/{a,b}.com
# echo "a.com" > /data/a.com/index.html
# echo "b.com" > /data/b.com/index.html
# chmod -R 755 /data
# tree /data
/data
├── a.com
│   └── index.html
└── b.com
    └── index.html

为了便于测试,这里修改hosts文件,并用curl命令测试

# echo "127.0.0.1 a.com b.com" >> /etc/hosts

# curl a.com
a.com
# curl b.com
b.com

# curl -I a.com
HTTP/1.1 200 OK
Server: iBash WS/1.0
Date: Thu, 21 Jul 2016 13:54:06 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 6
Last-Modified: Thu, 21 Jul 2016 13:45:41 GMT
Connection: keep-alive
ETag: "5790d205-6"
Accept-Ranges: bytes


如无特殊说明,文章均为本站原创,转载请注明出处