原文链接
Nginx用起来比Apache方便简介,也有很多超过Apache的地方。Nginx不仅可以作为http服务器来用,更重要的,它还可以用来做负载均衡和反向代理.
安装方法见: Centos使用nginx安装方法
配置文件详解
nginx配置文件地址在/etc/nginx/nginx.conf
,nginx的配置文件里,最重要的section是http区块,里面包含了全局设置、主机设置(server)、上游服务器设置(upstream)、URL设置
user www-data; # nginx所属用户
worker_processes 4; # 进程数,通常是和CPU数量相等
pid /var/run/nginx.pid;
events{
worker_connections 768; # 单个进程并发的最大连接数
# multi_accept on;
}
http{
##
# Basic Settings
##
sendfile on; # 开启高效文件传输模式,如果是高IO的应用可设置为off
tcp_nopush on;
server_tokens off; # 隐藏系统版本号 # server_names_has_bucket_size 64; #
server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings 全局日志文件
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings Gzip压缩功能,可减少网络传输
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
##
# Virtual Host Configs 虚拟主机配置,如果想要把server写在外面,可以在这里设置存放目录
##
include /etc/nginx/conf.d/_.conf;
include /etc/nginx/sites-enabled/_;
# 设置虚拟主机
server{
listen 80;
server_name haofly.net;
root /var/www/haofly; # 网站根目录
charset utf-8; # 字符集不应该在html里面指定,而直接在服务器端指定
# 该server日志文件存放路径
access_log /var/log/nginx/80_access.log;
error_log /var/log/nginx/80_error.log;
# 禁用非必要的请求方法,比如只处理GET、POST请求
if ($request_method !~ ^(GET|HEAD|POST)$ ){
return 444;
}
location = /{
# 完全匹配 =
# 大小写敏感 ~
# 忽略大小写 ~*
# 前半部分匹配 ^~
# 正则匹配,例如~* \.(.gif|jpg|png)$
}
location / {
root /var/www/haofly; # 设置根目录
index index.html; # 首页设置
proxy_pass http://name; # 上面设置的负载均衡服务器列表的名字
proxy_connect_timeout 60; # nginx到后台服务器连接超时时间
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /blog {
alias /var/www/blog; # 别名设置
}
location /static { # 静态文件由nginx自己处理
root /var/www/haofly;
}
}
负载均衡配置
在http里:
upstream backend {
server 127.0.0.1:81;
server 127.0.0.1:82;
}
在server里:
location / {
proxy_pass http://backend;
}
端口转发配置
在server里:
server{
listen 80;
server_name haofly.net;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8000;
}
access_log /var/log/nginx/haofly.net_access.log;
}
单独的虚拟目录配置
server{
listen 80;
server_name fun.haofly.net;
charset utf-8;
access_log /var/log/nginx/fun.log;
error_log /var/log/nginx/fun_error.log;
location ^~ /multiple-addresses-in-one-map/ {
alias /usr/share/nginx/multiple-addresses-in-one-map/;
}
}
查看负载均衡状态
nginx提供了默认的模块可以查看负载均衡的统计信息等,只需要在某个server里面添加:
location /nginx {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file /etc/nginx/htpasswd;
}
其中htpasswd是保存用户名和密码的文件,可以自定义位置,每一行一个用户username:password
这样子保存的,使用crypt3(BASE64)加密,可以用一个PHP文件来生成
$password = 'hehe';
$password = crypt($password, base64_encode($password));
echo $password;
最后访问 http://...../nginx 即可看到如下的负载均衡信息:
Active connections: 1
server accepts handled requests
2 2 37
Reading: 0 Writing: 1 Waiting: 0