LNMP之nginx配置

原文链接: http://blog.51cto.com/14316149/2422513

安装方法

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 "" > test_info.php
/usr/local/nginx/sbin/nginx -t 
/usr/local/nginx/sbin/nginx -s reload

访问 bbs.etiantian.org/test_info.php

你可能感兴趣的:(LNMP之nginx配置)