轻量级HTTP服务器Nginx

什么是Nginx?

Nginx由俄罗斯程序设计师Lgor Sysoev开发,是一款高性能的HTTP和反向代理服务器软件。可以运行在UNIX、GNU/Linux、BSD以及Microsoft等操作系统中。

Nginx的优势?

Nginx与Apache相比有以下优势:在性能上,它占用很少的系统资源,能支持多的并发连接,达到更高的访问效率;在功能上,Nginx是优秀的代理服务器和负载均衡服务器;在安装配置上,Nginx安装简单、配置灵活。

什么是正向代理or反向代理?

从用途 上来讲:

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将 防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

从安全性 来讲:

正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。

反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

Nginx的扩展功能:

基于名称和IP的虚拟主机;

支持Keepalive

支持平滑更新或升级服务器版本;

定制访问日志,支持使用日志缓冲以提高日志存储性能;

支持URL rewrite 重写;

支持路径别名;

支持基于IP及用户的访问控制

支持速率限制,支持并发数限制 ;

Nginx的扩展功能:

一个master进程,生成一个或多个worker

事件驱动:epoll,kqueue,/dev/poll(event ports)

消息通知:select,poll

支持sendfile,sendfile64

支持AIO

支持mmap

Nginx的安装方法:

1、编译安装

2、在epel源中也提供了下载包,直接下载安装即可

3、官方网站给出的地址是指向一个yum源的,我们可以将yum源指向这个链接,直接用yum安装;

4、直接在官网上获取yum源的链接地址,而后用浏览器访问指定地址,在对应网站上找到对应的包安装;

接下来编译安装Nginx:

安装版本:nginx-1.6.2.tar.gz

###安装nginx依赖环境
[[email protected] ~]# yum -y install pcre-devel    #支持URL重写,但URL重写时需要用到正则表达式库,所以需要装pcre;
[[email protected] ~]# groupadd -r nginx            #创建系统组
[[email protected] ~]# useradd -r -g nginx nginx    #创建系统用户
[[email protected] ~]# id nginx                     #查看nginx用户相关信息
uid=494(nginx) gid=491(nginx) groups=491(nginx)  #uid and  gid都为nginx
[[email protected] nginx-1.6.2]# ./configure --prefix=/usr/local/nginx \  # nginx安装目录
 --conf-path=/etc/nginx/nginx.conf  \              # nginx配置文件路径
 --user=nginx  \                                   # 指定启动nginx的系统用户          
  --group=nginx  \                                 # 制动启动nginx的系统组
  --error-log-path=/var/log/nginx/error.log \      # 错误日志文件路径
  --http-log-path=/var/log/nginx/access.log \      # 访问日志路径
  --pid-path=/var/run/nginx/nginx.pid   \          # pid文件路径
  --lock-path=/var/lock/nginx.lock   \             # 锁文件路径
  --with-http_ssl_module   \                       # 启用ssl模块
  --with-http_stub_status_module \             # 启用NginxStatus功能,以监控nginx当前状态
  --with-http_gzip_static_module  \            # 启用gzip_static_module模块
  --with-http_flv_module   \                   # 启用流媒体模块
  --with-http_mp4_module   \                   # 启用mp4流媒体模块        
  --http-client-body-temp-path=/var/tmp/nginx/client \ # 客户端请求报文包体临时文件路径
  --http-proxy-temp-path=/var/tmp/nginx/proxy  \        # 报文反向代理临时文件路径
  --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \     # 报文FastCGI临时文件路径
[[email protected] nginx-1.6.2]# make && make install
##加入PATH环境变量
[[email protected] ~]# vim /etc/profile.d/nginx.sh
#在里面加入如下语句
export PATH=/usr/local/nginx/sbin:$PATH
[[email protected] ~]# . /etc/profile.d/nginx.sh	# source一下
[[email protected] nginx-1.6.2]# nginx -t   # 对nginx配置文件进行语法检查
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] mkdir() "/var/tmp/nginx/client" failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
# 从上面可以看出其配置文件的语法是OK但是,有些目录在编译安装配置nginx的时候没有自动创建,此处需要手动创建其目录
mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi}	  # 创建目录
[[email protected] nginx-1.6.2]# nginx -t            # 再进行检查
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 可以看出其语法OK
[[email protected] ~]# /usr/local/nginx/sbin/nginx    # 启动nginx
[[email protected] ~]# ss -ntl            #查看80端口是否开启

###为nginx提供Sysv服务脚本:
[[email protected] init.d]# vim /etc/rc.d/init.d/nginx   
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse #               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/nginx.conf"     # 将此处改为自己编译的配置文件
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed ‘s/[^*]*--user=\([^ ]*\).*/\1/g‘ -`
   options=`$nginx -V 2>&1 | grep ‘configure arguments:‘`
   for opt in $options; do
       if [ `echo $opt | grep ‘.*-temp-path‘` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
 
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
===========
[[email protected] ~]# chmod +x /etc/rc.d/init.d/nginx # 添加执行权限
# 添加至chkconfig列表中
[[email protected] init.d]# chkconfig --list nginx   # 查看chkconfig列表
service nginx supports chkconfig, but is not referenced in any runlevel (run ‘chkconfig --add nginx‘)
[[email protected] init.d]# chkconfig --add nginx   # 添加nginx至chkconfig
[[email protected] init.d]# chkconfig --list nginx
nginx          	0:off	1:off	2:off	3:off	4:off	5:off	6:off
[[email protected] init.d]# chkconfig --level 2345 nginx on   # 设定2345级别为开启
[[email protected] init.d]# chkconfig --list nginx
nginx          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[[email protected] init.d]#service nginx start     # 启动nginx服务
[[email protected] init.d]#ss -tnl	 # 可以看到80端口已经打开
# 测试,此时在远端浏览器中输入:http://172.16.14.1
# 如若看到nginx的欢迎信息则表明安装成功,反之没有成功。

Nginx配置文件结构

Nginx的配置文件是一个纯文本,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的。每个block一般以一个大括号“{}”来表示,block可以分为几个层次,整个配置文件中main指令位于最高层,在main层下面可以有Events、HTTP等层级,而在HTTP层中又包含了server层,即
server block,server block中又可分为location层,并且一个server block中可以包含多个location block。


main主配置段的指令的类别:

用于调试、定位问题

正常运行必备的配置

优化性能的配置

事件相关配置

master以root身份运行,因为小于1024的端口也就是80只有root有权限启动;

worker是以我们指定的用户运行

正常运行的必备配置:

1、user USERNAME  [GROUPNAME];

指定运行worker进程的用户和组,例如:user  nginx  nginx;

2、指定PID文件:

Pid   /path/to/pid_file

3、worker_rlimit_nofile   #:指定一个worker进程所能够打开的最大文件句柄数;

service  nginx  reload   重新 加载 nginx配置文件;

4、worker_rlimit_sigpending  #:指定每个用户能够发往worker的信号数量;

优化性能相关的配置:

1、worker_processes #: worker线程的个数;通常应该为物理CPU核心个数减1;

2、worker_cpu_affinity cpumask ...;

绑定worker进程至指定的CPU上;

CPUMASK

0001  第一颗CPU

0010 第二颗 CPU

0100  ……

1000  ……

例如:worker_cpu_affinity 00000001 00000010 00000100;

绑定时只有将CPU真正隔出来,它来的性能提升才会真的有效,就是一颗 CPU只干这一件事,别的事它一点也不干了;

3、timer_resolution t;

gettimeofday();

4、worker_priority nice;      -20, 19

让worker刚启动时,让它的nice值以指定的优先级运行;

nice:-20 - 19  默认都是0 ;

事件相关的配置:

1、accept_mutex [on|off]  互斥锁,能够让多个worker进程轮流

内部调度用户请求至各worker时用的负载均衡锁;打开时表示能让多个worker轮流,序列化的响应新请求

2、lock_file  /path/to/lock_file:  锁文件路径

3、accept_mutex_delay #ms:

在打开内部负载均衡锁的模式时,锁是唯一的,谁拿到锁谁能接收新请求;

4、use [epoll|rgsig|select|poll]:

定义使用的事件模型:建议让Nginx自动选择:

5、worker_connections  #:

每个worker进程能够响应的最大并发请求数(默认为1024个);

最大客户端由 worker_processes和worker_connections决定 :Max_client=worker_process*worker_connections

例:connections=1024    worker_process=4   最终可响应的最大并发请求数为4000+

用于调试、定位问题:(只有调试问题时才需要使用):

1、daemon [off|on]

是否以守护进程方式启动Nginx;

2、master_process  on|off:

是否以master/worker模型来运行nginx;

3、error_log  /path/to/error_log level:

错误日志文件及其级别出于调试的目的,可以使用debug级别,但此级别只有在编译nginx时使用了--with-debug选项才有效;


配置nginx做为web服务器来使用:

虚拟主机相关的配置:

1、server{ }

定义一个虚拟主机:

2、listen

监听的端口

完整格式:

listen
address[:port] [default_server] [ssl] [spdy] [proxy_protocol] [setfib=number]
[fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size]
[accept_filter=filter] [deferred] [bind] [ipv6only=on|off]
[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

listen address[:port] [default_server]  ssl

backlog=number;指明TCP协议backlog队列大小。默认为 -1,表示不启用;

rcvbuf=size; 指明接收缓冲大小,设定监听的句柄的SO_RCVBUF参数;

ssl:当前监听的端口必须要使用ssl协议;

例如:

listen  172.16.100.8:8080

3、server_name  name 
[…]:

相当于httpd的主机名

后可跟多个主机名;名称还可以使用通配符和正则表达式 (~) ;

nginx收到一个请求时,会取出报文中的hostname会跟我们定义的各个虚拟主机进行匹配

(1)先做精确匹配;www.magedu.com;

(2)左侧通配符匹配,例如:*.magedu.com;

(3)右侧通配符匹配,例如:www.*;

(4)正则表达式匹配,例如:~^.*\.magedu\.com$

(5)default_server  如果以上都不匹配,就由这项进行匹配;

server的配置格式:

例:

Server {

Listen 8080;

Server_name www.zhangjian.com;

Location /  {

Root   "web/htdocs";

}

}

此时如果导入了服务类脚本可以用:

Service  
nginx   configtest   测试语法格式  等同于  nginx 
-t

Service nginx reload   语法没有问题,重新加载配置文件(刚刚启动了新的监听端口,必须重启服务)

Service nginx restart

yum    -y     install    
elinks

Eliks  
-dump   http://www.zhangjian.com   用Linux主机测试指定网页   --dump代表不进入交互模式,显示完立即退出

4、localtion
[=|~\~*|*~] /uri {…}

location @name

功能:允许根据用户请求的URI来匹配定义的各Location,匹配到时,此请求将被相应的Location块中的配置所处理;

允许根据用户请求的URL来匹配location中所给定的表达式,一旦匹配,将由localtion中所给定的配置进行处理;

例:

server {

localtion /images{ }

localtion /bbs { }

localtion /

}

http://www.magedu.com/images  此时就被第一个location所匹配了

=:精确匹配,把用户请求的URI,与各location匹配

~:正则表达式模式匹配,匹配时区分字符大小写

~*:正则表达式模式匹配,不区分字符大小写

^~:做URI的前半部分匹配,匹配时不检查正则表达式; 优先级较高

=代表精确匹配  只有在写 www.zhangjian.com/ 时才能被=号匹配

匹配优先级:精确匹配(=)、^~、~ 和 ~*、最后由不带符号的URL进行左侧匹配

当被多个location所匹配时,这些优先级还一样,就会被第一个location所匹配;

5、root 实现文件路径定义;

设置web的资源路径映射,用于指明请求的URL所对应的文档的根目录路径

可直接用于server中,也可以用于localtion段中;

location  /images/ {

root  
"/web/imgs/";

}

以/web/imgs 为根,也就是必须在根目标下存在images目录;

http://www.magedu.com/images/a.jpg

6、alias path

用于Location配置段,定义路径别名

location  /images/ {

alias /www/pictures/;

}

把images直接映射为 /www/pictures  ,在找images目录时,直接找/www/pictures即可;

回头实现一下这两个实验;

注意:root表示指明路径为对应location的 “/”URL; alias表示路径映射,即location中的 URL是相对于alias所指明的路径而言;

7、index file

默认主页面:

index    
index.html;

8、error_page  code 
[…]   [=code]   URI | @name   根据http状态码重定向错误页面

error_page   404   
/404.html   如果错误状态码为  404,那么给它返回指定的页面

=[code]:以指定的响应码进行响应;省略code表示以新资源的响应码为响应码;

例如:

Server  {

Listen  80;

Server_name  www.zhangjian.com;

Location /  {

root "/web/htdocs";

error_page  404 
/404.html;   如果发生了404错误,那么我就给它指定到一个页面;

}

location  /images/   {

Alias  "/web/imgs/";

}

}

1)可重写向成 另一个路径,也可重定向成一个URL;

error_page  404
http://mail.zhangjian.com/index.html;    此处如果发生了404错误,我给它重定向成了一个指定的URL

2)也可以改响应码,本来请求的不存在,我也可以给你返回一个200响应码;

error_page  404 
=200   /404.html;    本来发生的错误是404   此处我将它的响应码改成了200;

3)可以只写一个  =   会由你转向的页面的响应码做为响应码;

error_page  404 
=   /hello.html     此处只写了一个=号,而没指定响应码,代表发生了404错误,我会去找hello.html,并以hello.html的状态响应码为最终响应码;   放在此处也就是说 hello.html没有什么错误的话,就会给它返回一个200;

9、try_files

try_files   path1  [,path…] 
URI

用户访问指定的URI下,如果第一个找不着就找第二个,第二个找不着就找第三个,如果都找不找就找Location所在的段;


网络连接相关的配置:

1、keepalive_timeout
time:

保持连接的超时时长,默认为75s;

2、keepalive_requests  #:

在一次保持连接上允许承载最大资源请求数

3、keepalive_disable
[msie6|safari|none]

为指定类型的浏览器禁用长连接

4、tcp_nodelay on|off

对长连接是否使用 TCP_NODELAY选项;

默认tcp不会把非常小的资源发送过去,要攒够更多的小报文一起发送

5、client_header_timeout  time:

读取http请求报文首部的超时时长;

6、client_body_timeout
time:

读取Httpd请求报文的body部分的超时时长;

7、send_timeout  time:

发送响应报文的超时时长;

对客户端请求进行限制:

1、limit_except  METHOD {…}

指定对范围之外的其它方法的访问控制;

limit_except
GET {

allow 172.16.0.0/16;

deny all;

}

如果客户端请求时使用的是 GET以外的方法,只允许172.16.0.0以外的客户端

2、client_body_max_size  SIZE:

限制请求报文中body部分的上限; 通过检测请求报文首部中的"Content_Length"来判定;

3、limit_rate  speed:

限制客户端每秒钟传输的字节数,默认为0表示无限制 ;

上面这些配置通常都可以用在 http  
server   或 location  段中的;

http段代表全局生效,server代表主机名生效,location代表某个目录下生效;


对内存或磁盘资源进行分配:

1、client_body_in_file_only   on|clean|off;

httpd请求报文的body部分是否存储在磁盘文件中

请求报文的body部分是否可暂存于磁盘;on表示允许,并且即便请求结束,也不会删除暂存内容;clean表示会删除;off表示不允许暂存;

2、client_body_in_single_buffer
on|off

请求报文的body部分,是否可以暂存在内存的buffer中,默认为off,不允许存;

如果内存空间足够用,允许存会提高性能;

3、client_body_buffer_size  size;

如果允许暂存,可以暂存多大的内容;

4、client_body_temp_path  DIR  
[level1 [level2 [level3 [level4]]]]

如果允许暂存,可以暂存在哪个目录下,可以存在多级目录下

例如:client_body_temp_path   
/var/tmp/nginx/client   1  2

5、client_header_buffer_size:

请求报文header部分时,分配的内存大小 ;

正常情况下接收用户请求报文时,预留的内存空间大小 ;


MIME类型相关的配置:

1、type { }

定义MIME  types 到文件的扩展名

types {

text/html   .html

image/jpeg   .jpg

}

用于说明请求的是html类型,我们就把它当text文本类型;

2、default_type
MIME-TYPE:指明默认的MIME类型;

文件操作优化相关的配置:

1、sendfile  on|off

有可能支持的单个文件上限小,回头百度一下

2、aio  on|off

在nginx内部是否启用内核级别的文件I/O性能;

3、directio
size|off  是否启用直接I/O

是否使用O_DIRECT选项去请求读取文件;不会在内存中缓冲,而是直接写在磁盘上,对数据来说较安全;与sendfile互斥;

4、Open_file_cache  max=N[inactive=time] | off: 是否开启缓存空间 缓存空间最大有多大;

nginx可以缓存以下三种信息:

(1)文件句柄、文件大小和最近一次修改时间

(2)打开目录的目录结构;

(3)没有找到的或者没有权限操作的文件的相关信息

max=N 表示可缓存的最大条目上限;一旦到达上限,则会使用LRU,最近最少使用算法;从缓存中删除最近最少使用的条目;

inactive=time;在由inactive指定的时长内没有被访问过的缓存条目就会被淘汰;

5、open_file_cache_errors
on  是否缓存那些出现了错误的信息

是否缓存在文件缓存中缓存打开文件时出现的找不到路径没有权限等的错误信息;

6、openfile_cache_min_uses

每隔多久检查一次缓存中缓存条目的有效性;默认为60秒;(太短会加大CPU负荷)

重点关注:server{},localtion{},listen,server_name,root,alias,keepalive_timeout,keepalive_requests,error_path


基于IP的访问控制:

http,server,location

allow,deny

例:

location  /admin 
{

root  /nginx/htdocs;

allow 192.168.0.0/24;

deny all;

基于用户的basic认证配置方法:

auth_basic

auth_basic_user_file

nginx同样支持用 htpasswd 命令创建用户账号文件

例:

rpm 
-qf   `which  htpasswd`    查看指定命令由哪个软件包生成

location   /admin  {

root   /nginx/htdocs;

auth_basic  "admin  area"

auth_basic_user_file 
/etc/nginx/.htpasswd

}

此处在用  htpasswd -c  -m   生成指定文件即可

基于gzip实现响应报文压压缩:

例:

gzip  
on;                   # 开启或关闭gzip模块

gzip_min_length  1024k;      # 允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取,默认为0,不管页面多大都进行压缩,建议设置成大于 1K的页面,小于1K的页面进行压缩会出现越压越大的情况;

gzip_http_version  1.1;      #  用于设置识别HTTP协议版本,默认是1.1,大部分浏览器已经支持gzip压缩,使用默认即可;

gzip_vary  on;               # 可以让前端的缓存服务器缓存经过gzip压缩的页面

gzip_proxied  expired 
no-cache  no-store  private 
auth;    #这里没有

gzip_comp_level  7;          # 指定gzip压缩比,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但处理慢,较消耗CPU资源

gzip_buffers  16 
8k;        # 申请16个单位为8K内存作为压缩结果流缓存,默认是申请与原始数据大小相同的内存空间来存储gzip压缩结果

gzip_type    text/plain     text/thml     application/xml     application/json    application/x-javascript;   #  指定压缩的类型,无论是否指定text/html类型总会被压缩

headers_module

定制响应首部:  (允许我们在响应首部中自己加一段)

add_header name value [always]:

expires

local段中:

add_header  X-header   testheader;  首部名称   首部值  这块没有任何意义,自己随便写的

此时在用浏览器访问一次,开启调试模式,看报文首部,即可看出来结果

log_module

定制访问日志:

log_format   定义日志格式

access_log    定义访问日志

格式:

log_forat
compression ‘$remote_addr - $remote_user [$time_local]‘

"‘$request" $status $bytes_sent‘

"‘$http_referer" "$http_user_agent"
"$gzip_ratio"‘;

access_log 
/spool/logs/nginx-access.log 
commpression  buffer=32k;

$处使用的是 log自带的变量:

commpression:日志名

remote_addr:客户端IP地址

remote_user:如果客户端登陆了,客户端的用户名

time_local:当前服务器端时间

request:用户请求的内容,请求的URL,包括整个请求符

status:状态码

bytes_sent:发送的字节数

http_referer:上一次页面,从哪跳转过来

http_user_agent: 浏览器类型

gzip_ratio:压缩比

buffer:缓存大小

flush=time:每隔多长时间从内存中刷到磁盘上一次,写的时间越长发生磁盘I/O的调用越少,性能越好,但是万一崩溃了丢失的量也越多;

如果不定义它也有默认格式,但是将来可能会经常需要定义成与 httpd的combined格式相同的格式;

combined是一种常用的日志格式;

时间: 2024-10-05 22:28:50

轻量级HTTP服务器Nginx的相关文章

轻量级HTTP服务器Nginx(配置与调试Nginx)

Nginx安装完毕后,会产生相应的安装目录,根据前面的安装路径,Nginx的配置文件路径为/opt/nginx/conf,其中nginx.conf为Nginx的主配置文件.这里重点介绍下nginx.conf这个配置文件.         Nginx配置文件主要分成四部分:main(全局设置).server(主机设置).upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置).main部分设置的指令将影响其他所有设置:server部分的指令主要用于指定主机和端口:up

WEB服务器-Nginx之虚拟主机、日志、认证及优化

WEB服务器-Nginx之虚拟主机.日志.认证及优化 概述 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一

高性能Web服务器Nginx

高性能Web服务器Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,可以运行在UNIX.GUN/LINUX.BSD.MAC OS X以及Microsoft Windows等操作系统中,中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等. Nginx的功能 Nginx的模块从功能上分为

session服务器Nginx+Tomcat+Memcached集群Session共享

cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jordan”,同时还对所创立的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 下面这个Hea

Tengine,轻量级Web服务器

阿里妹导读:Tengine,轻量级Web服务器,基于Nginx进行开发,针对大访问量网站的需求,新增了很多高级功能和特性.比如,Tengine兼容Nginx的所有配置,并且增加了独立进程框架.页面优化.集成了Lua语言进行扩展等很多实用的功能,并在性能方面做了较大的提升.阿里全站HTTPS项目诞生的七层流量入口网关"接入层"也是基于Tengine,目前90%以上的流量都是HTTPS,它是如何支撑双11零点流量高峰如丝般顺滑? 背景介绍 虽然全站HTTPS已经是一个老生常谈的话题,但是国

直播服务器Nginx

Mac直播服务器Nginx配置对HLS的支持 在上一篇中Mac上搭建直播服务器Nginx+rtmp,我们已经搭建了nginx+rtmp直播服务器.下面需要对Nginx服务器增加对HLS的支持.在Nginx增加对HLS种支持比较简单,只是简单的修改下配置文件nginx.conf即可. 安装 nginx 和 rtmp 模块 有关 nginx 的编译和安装比较简单,请参考上一篇中Mac上搭建直播服务器Nginx+rtmp.这里提示以下几点: (1) 安装好 nginx 后,打开配置文件: /usr/l

轻量级web服务器lighttpd的编译及配置(for x86-linux)

转自:http://blog.163.com/ljf_gzhu/blog/static/131553440201211522317367/ 备注: PC Linux:Ubuntu-10.10 Linux用户:root lighttpd版本:1.4.30 gcc版本:4.4.5 1. 编译.安装 1.1. 先到lighttpd官网下载对应版本的软件包: http://www.lighttpd.net/ 我下载的是 lighttpd-1.4.30.tar.gz 1.2. 将压缩包解压到任意目录(我的

CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)

以下全部转载于  http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份,就转过来了. --------------------------------------------------------------- 转载者语: 转载于:http://www.osyunwei.com/archives/2353.html 原文标题:CentOS 6.2yum安装配置lnmp

高性能web服务器nginx(一)之基本概念

说明本篇文章大部分参考此人的博文:http://freeloda.blog.51cto.com/2033581/1285722,建议若想继续深入学习nginx时最好先看下此人所写的文章,总结的很详细,然后在找相关的书籍和查阅官方文档学习. 一.NGINX介绍 1 简介 传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发连接请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下.生成一个新的进程/线程需要事先备好其运行时环境,这包括为其分配堆内存