Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28281
  • 博文数量: 13
  • 博客积分: 653
  • 博客等级: 上士
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-25 21:20
文章分类
文章存档

2011年(2)

2010年(11)

我的朋友

分类: LINUX

2010-06-21 18:23:29

刚刚转行互联网行业,服务器研发,涉及了很多服务器相关的源码软件,先介绍下Nginx的熟悉过程。
 
Nginx简介:
Nginx是一个高性能的Http和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的。Igor将源代码以类BSD许可证的形式发布。
Nginx超越Apache的高性能和稳定性,使得国内使用Nginx作为Web服务器的网站也越来越多,其中包括新浪、网易等门户网站,六间房、56.com等视频分享网站,水木社区等知名论坛,豆瓣、迅雷等新兴Web 2.0网站。
Nginx的官方中文Wiki:
Nginx的性能没测试过,有兴趣的朋友请参阅网上相关资料。
 
安装步骤:
1.安装Nginx需要pcre(Perl Compatible Regular Expressions)库的支持.
#tar xjvf pcre-8.02.tar.bz2
#cd pcre-8.02
#./configure
#make && make install
#cd ..
2.安装Nginx
#tar xzvf nginx-0.7.67.tar.gz
#cd nginx-0.7.67
#./configure
#make && make install
#cd ..
 
启动命令:
#/usr/local/nginx/sbin/nginx
上面的命令可以接收的命令行参数有
-c 指定配置文件,非默认的conf目录下的nginx.conf
-t 测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用于检测所修改的配置文件是否有语法错误
-v 显示nginx软件的版本号
-V 显示nginx的版本号以及编译环境信息,编译时的参数
比如,如果要测试配置文件的修改是否存在问题,可以用/usr/local/nginx/sbin/nginx -t conf/nginx.conf命令来测试。
最后,确保系统的80端口没有被其他程序占用,运行/usr/local/nginx/sbin/nginx来启动nginx服务,打开浏览器来访问此机器的IP(如),如果浏览器出现“Welcome to nginx!”表明Nginx安装运行成功。
上面列出了Nginx的参数控制,下面来介绍信号控制。
Nginx支持下面信号:
信号名           作用描述
TERM,INT        快速关闭程序,中止当前正在处理的请求
QUIT            处理完当前请求后,关闭程序
HUP             重新加载配置,并开启新的工作进程,关闭旧的进程,此操作不会中断请求
USR1            重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件
USR2            平滑升级可执行程序
WINCH           从容关闭工作进程
有两种方式来通过这些信号控制Nginx,第一是通过logs目录下的nginx.pid查看当前运行的Nginx的pid,通过kill -xxx 来控制Nginx,其中xxx就是上述的信号名,如果您的系统只有一个Nginx进程,也可以通过killall -s HUP nginx命令来完成。
Nginx配置:
贴出一个实际的配置文件:
 
user  nobody; #工作进程的属主
worker_processes  8; #工作进程数
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log  logs/error.log  crit;
pid        logs/nginx.pid;

events {
    use epoll;#linux下最好的网络I/O方式
    worker_connections  2048;#每个工作进程允许最大的同时连接数
}
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"';
    #access_log  logs/access.log  main;
    sendfile        on;
    tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;
 
    #集群配置
    upstream tomcats {
        server 192.168.0.11:8080 weight=10;
        server 192.168.0.12:8081 weight=10;
        server 192.168.0.13:8080 weight=10;
        server 192.168.0.14:8081 weight=10;
        server 192.168.0.15:8080 weight=10;
        server 192.168.0.16:8081 weight=10;
    }
    server {
            listen       80;#http端口,当然可以设定另一个server8080端口,
                            #或者在443端口开启https服务
            #server_name  ;
            server_name  localhost;#主机名
            #charset koi8-r;
            #access_log  logs/host.access.log  main;
            location / {
                root   html;
                index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   ;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #运行php-cgi,来设置php的url请求解析
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #include        fastcgi_params;
            include        fastcgi.conf;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;
    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_timeout  5m;
    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #    ssl_prefer_server_ciphers   on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}
简单测试方法如下,在html的目录下建立index.php文件,然后文件内容如下
     echo"Welcome to nginx!"."\n"
?>
然后在IE中输入,如果出现Welcome

to nginx!表明解析php成功(xxx.xxx.xxx.xxx为你运行nginx服务的机器的ip地址)。

最后补充说明2点

1.解析php程序,需要运行php-cgi,具体php相关的编译省略

#/usr/local/bin/php-cgi -b 127.0.0.1:9000 &

2.如果在nginx.conf中server_name改成即 server_name ;

想实现IE访问成功,即可以出现Welcome to nginx!,需要在你的客户机上打开c:\windows\system32\drivers\etc\hosts文件,追加

xxx.xxx.xxx.xxx

(xxx.xxx.xxx.xxx)为运行nginx服务的ip地址

最后,此文章参考了网上很多文章,简单的总结了Nginx的熟悉过程,希望有兴趣的朋友更深的研究下去,一起分享,进步,谢谢。

阅读(700) | 评论(0) | 转发(0) |
0

上一篇:大小端判定

下一篇:Memcached & Php-memcache

给主人留下些什么吧!~~