安装方法
yum 安装
yum 需加epel源
yum install -y epel-release
yum install -y nginx
编译
wget http://nginx.org/XXXXX
##pcre pcre-devel必装,实现伪静态功能,不装会报错,且不能用rewrite
yum install pcre pcre-devel
yum install -y openssl-devel
tar xvzf nginxXXXXXXX.tar.gz
cd
./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx/
## 启动 也可加全路径
./nginx
##关闭
pkill nginx
./nginx -s stop
## 重启 有的时候不好用,就用stop 然后再开启
./nginx -s reload
##检查语法,生产环境一定先检查语法
./nginx -t
web 排错
ping
telnet
wget 或 curl -I
nginx 常用模块 nginx.org/documents 里看
基于域名
##nginx并发连接数 processes 乘 connection
## worker_processes 服务进程数,一般和cpu 核心一致即可
worker_processes 1;
## 可加在main http server location 里,可设置分别的模块日志
##生产环境一般用 warn error crit,默认error
error_log logs/error.log [debug|warn|error|crit];
events {
##一个worker同时服务数量
worker_connections 1024;
}
http {
include mime.types;
## include extra/www.conf; 包括extra下的配置文件
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
##定义访问日志记录格式 以及访问日志保存路径,可放于http
##location 模块里
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;
### 加下面这个server 块 禁止 IP访问
server {
listen 80 default;
server_name _;
return 403;
}
##加下面模块,可通过status.etiantian.org 查看网站访问次数
##active connection 活动连接,即并发数
## server accepts handled requests 三个值分别
##1.一共处理的链接 2.成功创建多少次握手 3.已经处理完毕
## reading:读取客户端header信息数量 writing:返回客户端数量
## waiting :已经处理完等待下一次请求的滞留链接
server{
server_name status.etiantian.org;
##也可在已有的虚拟主机加下面这个location
location / {
stub_status on;
access_log off;
}
}
server {
listen 80;
##server_name 后空格加多个域名即起到别名的作用,别名
##也需要做DNS解析 别名的优势既可以对外方便访问
##也可以对内部集群做监控用,因为集群对外都是同一个域名
##设置别名可以分别监测每一台服务器
server_name www.etiantian.org etiantian.org ;
location / {
root html/www;
index index.html index.htm;
}
}
server {
listen 80;
server_name bbs.etiantian.org;
location / {
root html/bbs;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.etiantian.org;
location / {
root html/blog;
index index.html index.htm;
}
}
}
##例子 www.arrow.org/document 跳转 www.baidu.com
### 其它则 显示html/www/index.html
server {
listen 80;
server_name www.arrow.org;
# autoindex on;
rewrite ^(.*)/document/ http://www.baidu.com break;
location / {
#return 404;
root html/www;
index index.html;
}
}
基于端口
listen 80;
listen 81;
listen 82;
###对应server模块部分直接修改即可,这时外部访问需要指定
域名+端口的访问形式,最终解析成 IP:端口 的形式,这时最终会映射到对应端口的server部分,无视域名
基于IP访问
首先需要有多个IP
listen 10.0.0.100:80;
listen 10.0.0.101:80;
listen 10.0.0.102:80;
对应server部分对应这个就可以
配置文件分离保存,并不是所有的配置都可以
在/usr/local/nginx/conf 下创建一个目录,将配置文件分离保存在这个目录里,便于模块化管理
mkdir -p /usr/local/nginx/conf/extra
nginx.conf将server模块分出来,替代成
include extra/*.conf;
include extra/www.conf;
nginx 日志切割
## 创建文件一个文件,将日志mv过去,直接重启,新的access_log
##会自动生成
vim cut_nginx_log.sh
cd /usr/local/nginx/logs
/bin/mv access_logs /data/logs/access_logs$(date -I).log
/usr/local/nginx/sbin/nginx -s reload
############################################
nginx location
location(相当于if else) 要用用户请求URI(URL) 来执行不同的应用
语法
location [=|~|~|@|^~] url { } 匹配
~ !~取反.用于区分大小写匹配
~ !~ 取反.不区分大小写匹配,也可用于逻辑操作符
= 精确匹配
^~ 优先匹配
匹配优先级 = ^~ ~.(gif|jpg正则匹配) /document/ /
###########################################
nginx rewrite
rewrite 实现url地址改写重写. 需要PCRE支持
apache nginx resin tomcat 都支持,复杂的需要开发去实现
最简单的可以运维搞定
rewrite语法 rewrite regex replacement[flag];
位置 server location if
例子:
rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
rewrite /document/ http://www.baidu.com permanent;
匹配所有
# rewrite 时 注意正则的精确匹配还是模糊匹配,跳转的网址要写精确网址
location =/document/cc.txt {
rewrite /document/cc.txt https://www.baidu.com permanent;
flag: permanent 301 永久重定向,显示跳转后的地址
break 匹配完即终止,不再匹配后面的任何规则
redirect 302 临时重定向,显示跳转后的地址
last 本条匹配完后 继续向下匹配新的URL规则
rewrite 在企业中100%会用到
规范URL名字更美观,动态URL更容易被收录
############################################
通过nginx设置访问密码
登陆需密码
##加登陆密码,这里注意haha 文件 是通过 htpasswd命令创建,而不是手动touch,该命令需要装 httpd-tools软件
##auth_basic 可用模块 http server location
auth_basic "test auth ";
##这里要写密码文件 全路径,htpasswd 命令创建密码文件
auth_basic_user_file /usr/local/nginx/conf/haha;
nginx 与PHP 链接
vim /usr/local/nginx/conf/nginx.conf
##对应的站点加这个location
location ~.*\.(php|php5)?$ {
root html/bbs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
cd /usr/local/nginx/html/bbs
echo echo "<?php phpinfo();?>" > test_info.php
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
访问 bbs.etiantian.org/test_info.php