linux nginx简单教程

nginx的简介

  1. 常用的web服务器简介

    web服务器常常被称之为www(world wide web)服务器,HTTP服务器,其主要功能是提供

网上信息浏览服务,Linux和uninx平台下常用的web服务器有Apache、Nginx、Lighttpd、Tomcat

等,下图是http://www.netcraft.com网站2014年最近统计的各web服务器的市场占有率。技术分享

从上图可以看出apache一直在web服务器上占有"老大的位置",主要优势在于源代码的开放,有一

支开放的开发队伍,支持跨平台的应用,以及可移植性等。Microsoft 的IIS,IIS是一组服务组件

包括web服务器,ftp服务器,smtp服务器等。

Nginx由于出现的比较晚,市场份额一直处于上升的地步,截至目前,大概占据14.47%。

相对于其他web服务,Nginx主要以下的优势.

1.Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freebsd)网络I/O模型,支持高并发连接

Apache使用的则是传统的select模型,子进程的派生需要消耗的cpu资源较Nginx大的多。

2.内存消耗更小,Nginx+PHP(Fastcgi)在3万并发连接下,开启10个nginx进程,消耗的内存为150M.

3.成本低廉,Nginx遵循BSD开源协议,可以免费使用,并且可用于商业用途

4.配置简单,支持URL等重写功能


2.编译安装Nginx

  Nginx是开源软件,可以安装在Microsoft、Unix、Linux等系统上,此处介绍在centos6.6_x86-64

编译安装nginx1.6.2版本,当然你也可以安装其他版本的。nginx官网地址为:www.nginx.org

在官网上可以看到在支持的各个版本,nginx的编译安装需要准备好编译环境,需要的环境,根据

所选择的Nginx功能而不同,主要准备gcc等,nginx支持第三方模块,如果gzip如果安装zlib库等,

以下是我编译时准备的开发环境。

 yum groupinstall "Development Tools" "Server Platform Development"
 yum install -y zlib zlib-devel openssl openssl-devel 
 yum install -y pcre-devel

技术分享

使用./configure --help可以查看各个选项及其意义

在安装nginx前先创建nginx用户和nginx组,以nginx用户身份来运行nginx的worker process进程

useradd -M -s /sbin/nologin nginx
./configure --prefix=/application/nginx \        #将nginx安装在/application/nginx目录下
--user=nginx \                       #以nginx用户来运行worker process进程
--group=nginx --with-http_ssl_module \            #支持ssl功能
--with-http_flv_module \            #支持flv功能
--with-http_gzip_static_module      #支持gzip压缩
make
make install

可以根据自身想实现的功能选择相应的选项即可,提醒各位在编译安装每一步的时候,查看是否

有错误出现,要解决各个错误后在进行下一步,不然最后编译好了无法使用,回头查看的时候第

一步就出错了。

编译好后,可以查看/application/nginx目录,会发现下面的内容很少。

3.Nginx的启动、停止、平滑重启

Nginx启动命令位于/application/nginx/sbin目录下的唯一一个启动脚本nginx,启动不需要加任

何参数

/application/nginx/sbin/nginx即可,如果配置文件编译时安装在其他目录下,可以使用-c选项

制定其目录,默认会寻找编译目录/application/nginx目录下的conf目录下的nginx.conf,启动后

可以查看服务进程

技术分享

各位看到的可能只有一个master process 和一个worker process,我这看到3个是因为我修改了

nginx.conf的worker_processes  3;

如果看到以上信息则表面nginx启动正常,如果没有看到,请检查报错信息,此时查看网页,地址

栏中输入nginx服务主机地址,可以看到welcome to nginx的信息,表面访问成功。

nginx停止,可以使用 /application/nginx/sbin/nginx -s stop命令,也可以发送信号,如

kill - QUIT Nginx主进程号

Nginx平滑启动,可以使用 /application/nginx/sbin/nginx -s reload命令,或发送信号如

kill -HUP Nginx主进程号,推荐/application/nginx/sbin/nginx -s reload方式


4.Nginx虚拟主机配置

    虚拟主机使用的是一种软硬件技术,把一台运行在internet上的服务器主机分成一台台"虚拟"

的主机,每台虚拟主机都可以是一个独立的网站,具有完整的服务器功能。在Nginx配置文件(nginx.conf)中,每个server中就是一个虚拟主机,如下:

http{
        server {
                listen 80;
                server_name www.v3.com *.v3.com;
                access_log logs/access.log combined;
        location /{
                        index index.html index.htm;
                        root html/v3;
                }
        }    
}

注意:在nginx中每行后面要有;(分号)作为每行的结束符使用/application/nginx/sbin/nginx -t

会报错,例如:

技术分享

生产中切记,每次修改后要先检测是否有错误再重启。

4.1 基于域名的虚拟主机的配置

基于域名的虚拟主机是最常见的一种虚拟主机,多个虚拟主机可以共享同一个ip地址,有效解决了

ip地址不足的问题,测试配置如下:

http {
        server {
                listen 80;                        #监听的端口
                server_name www.v1.com;
                access_log logs/access.log combined;   #访问日志存放的位置
                location /{
                        index index.html index.htm;  #会从左到右查找首页文件
                        root html/v1;                # 网页文件存放的位置
                }
        }
        server {
                listen 80;
                server_name www.v2.com;
                access_log logs/access.log combined;
                location /{
                        index index.html index.htm;
                        root html/v2;
                }
        }
        server {
                listen 80;
                server_name www.v3.com *.v3.com;
                access_log logs/access.log combined;
        location /{
                        index index.html index.htm;
                        root html/v3;
                }
        }
}

以上路径使用的是相对路径,相对于安装目录,在v1、v2、v3目录下分别放置了3个首页文件技术分享

下面我们使用crul命令来测试各个域名的文件

技术分享

可以看到各个域名的首页文件的内容

4.2 基于IP地址的虚拟主机的配置

很容易理解,基于IP的虚拟主机就是一个IP地址上运行一个虚拟主机,由于手上没有那么多的主机

在此我将同一台主机上的一个网卡通过别名的方式配置了多个别名,每个别名上配置了一个ip地址

命令为:

ifconfig eth0:1 192.168.1.6 broadcast 192.168.1.255 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.1.7 broadcast 192.168.1.255 netmask 255.255.255.0 up

技术分享

http {
        server {
                listen 192.168.1.3:80;
                server_name 192.168.1.3;
                access_log logs/access.log combined;
                location /{
                        index index.html index.htm;
                        root html/v1;
                }
        }
        server {
                listen 192.168.1.6:80;
                server_name 192.168.1.6;
                access_log logs/accesss.log combined;
                location /{
                        index index.html index.htm;
                        root html/v2;
                }
        }
        server {
                listen 192.168.1.7:80;
                server_name 192.168.1.7;
                access_log logs/access.log combined;
                location /{
                        index index.html index.htm;
                        root html/v3;
                }
        }
    }

再次使用crul命令查询,如下:

技术分享

以上就是基于IP的虚拟主机。

4.3 基于端口的虚拟主机

基于端口就是同一个ip地址不同的端口来创建虚拟主机,如

http {
        server {
                listen 80;
                server_name 192.168.1.3;
                access_log logs/access.log combined;
                location /{
                        index index.html index.htm;
                        root html/v1;
                }
        }
        server {
                listen 8081;
                server_name 192.168.1.6;
                access_log logs/accesss.log combined;
                location /{
                        index index.html index.htm;
                        root html/v2;
                }
        }
        server {
                listen 8080;
                server_name 192.168.1.7;
                access_log logs/access.log combined;
                location /{
                        index index.html index.htm;
                        root html/v3;
                }
        }
    }

技术分享

本文出自 “流泪的魔鬼” 博客,请务必保留此出处http://sepizi.blog.51cto.com/9773154/1596626

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。