刚刚转行互联网行业,服务器研发,涉及了很多服务器相关的源码软件,先介绍下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) |