一、首先就是nginx的安装
这里使用编译安装在官网http://nginx.org找到需要的版本,因其依赖pcre库,先安装pcre库
命令
#yum install pcre pcre-devel
#cd /user/local/src
#weget http://nginx.org/download/nginx-1.16.1.tar.gz
#tar zxvf nginx-1.16.1.tar.gz
#cd nginx-1.16.1
#make && make install
下载完成,这里记录一下相关知识
tar 的一些参数
必选且只能选一个的参数
-c: --create 新建一个压缩文档,即打包
-x: --extract,–get解压文件
-t: --list,查看压缩文档里的所有内容
-r:–append 向压缩文档里追加文件,递归下载
-u:–update 更新原压缩包中的文件
辅助选项:
-z:是否同时具有gzip的属性?即是否需要用gzip压缩或解压?一般格式为xxx.tar.gz或xx.tgz
-j:是否同时具有bzip2的属性?即是否需要用bzip2压缩或解压?一般格式为xx.tar.bz2
-v:显示操作过程!这个参数很常用
-f:使用文档名,注意,在f之后要立即接文档名,不要再加其他参数!
-C:切换到指定目录
二、目录介绍
进入安装的nginx下
可见
conf 配置文件
html 网页文件
logs 日志文件
sbin 二进制程序
启动:进入安装目录后 ./sbin/nginx
启动时常见问题:80端口占用问题
分为两种情况
(1)确实有软件占用,关掉即可;若是自带apache且自启动 server httpd stop;
若是自行编译安装:path/to/apach/bin/apachtl stop
(2)无服务占用
三、一些命令参数
nginx目录 -t 测试配置
nginx目录 -s reload 加载最新配置
nginx目录 -s stop 立即停止
nginx目录 -s quit 优雅停止(即运行结束停止)
nginx目录 -s reopen 重新打开日志
使用日志文件的切割:复制日志文件到另一个文件中,再新建一个
eg:
mv aa.log bb.log
touch aa.log
但此时不会写入新的aa.log中,我们可以直接重启,更好的方法-s reopen 重连
四、nginx的一些配置
nginx配置文件nginx.conf 1、全局配置2.sever段配置虚拟主机
server {
listen 80; #监听端口
server_name aa.com; #域名
access_log 路径(该虚拟主机下日志存放路径) 内容格式(可自定义,见五、日志管理)
#eg: access_log logs/aa.log simple;
location \ {
root: 绝对相对都可以 #根目录
index:index.php index.html #入口文件
}
//解析php的配置
location ~ \.php$ {
root #和上面一致
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
}
五、日志管理
如果使用了代理服务器,则 $request_addr 就无法获取真正的用户ip,此时代理服务器会返回参数$http_x_forwarded_for
六、url重写
同样在sever中配置(修改两处)
server {
listen 80; #监听端口
server_name aa.com; #域名
access_log 路径(该虚拟主机下日志存放路径) 内容格式(可自定义,见五、日志管理)
#eg: access_log logs/aa.log simple;
location \ {
root: 绝对相对都可以 #根目录
index:index.php index.html #入口文件
if (!-e $request_filename) { #url重写1
rewrite (.*)$ /index.php/$1;
}
}
//解析php的配置
location ~ \.php$ {
root #和上面一致
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $1; #url重写2
include fastcgi_params;
}
}
七、try_files
上面url重写过于繁琐,官方提供了简单的方法server {
listen 80; #监听端口
server_name aa.com; #域名
access_log 路径(该虚拟主机下日志存放路径) 内容格式(可自定义,见五、日志管理)
#eg: access_log logs/aa.log simple;
location \ {
root: 绝对相对都可以 #根目录
index:index.php index.html #入口文件
try_files $uri /index.php?$uri; #try_files配置
}
//解析php的配置
location ~ \.php$ {
root #和上面一致
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
}
八、负载均衡
这里简单模拟了一下我们想实现的负载均衡图,这里首先介绍一些名词
双机热备:当代理服务器挂掉,它的ip会自动落到备用服务器上以此避免系统宕机,(即上图的备用负载),实现高可用;
动静分离:就是将静态资源单独存放,我们可以搭建专用的服务器来存储图片,视频等(即上图静态资源服务器1和2)