Nginx
Nginx是个web服务器,常用作静态文件服务器,反向代理服务器,邮件代理服务器,负载均衡服务器
Nginx安装
1. 安装淘宝nginx,编译安装,先解决模块依赖
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2. 获取淘宝nginx的源代码
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
3. 解压缩源代码包
tar -zxvf tengine-2.3.2.tar.gz
4. 进入源代码目录开始编译三部曲
①指定安装路径
./configure --prefix=/opt/tngx
②编译且安装
make && make install
③安装完成之后,进入Nginx的目录
[root@localhost tngx]#pwd
/opt/tngx
[root@localhost tngx]#ls
conf html logs sbin
-
- conf 存放配置文件
- html 存放前端页面
- logs nginx的运行日志
- sbin nginx的可执行命令目录
进入sbin目录
[root@localhost tngx]#cd sbin
-
- ./nginx 启动Nginx
- ./nginx -s stop 停止Nginx
- ./nginx -t 检查nginx.conf的语法是否正确
- ./nginx -s reload 不重启Nginx,重新加载Nginx配置
Nginx配置
配置文件为conf目录下的nginx.conf
Nginx虚拟主机
http {
#nginx支持多虚拟主机,只需要写入多个server关键字即可
#虚拟主机1
server {
#基于端口的虚拟主机区分
listen 80;
#基于域名的虚拟主机区分
server_name www.asdf.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
#这里是nginx的url匹配,如同django的url一样
#当请求 http://192.168.182.130:80/abc.jpg 这样的url时,就进入如下location匹配
#这个是最低级的匹配,所有请求都会走到这里
location / {
#root关键字定义虚拟主机的根目录,这里是可以修改的
root /opt/abc/;
#index参数定义首页文件的名字
index index.html;
}
}
#虚拟主机2
server {
#基于端口的虚拟主机区分
listen 81;
#基于域名的虚拟主机区分
server_name www.qwer.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
#这里是nginx的url匹配,如同django的url一样
#当请求 http://192.168.182.130:81/xyz.jpg 这样的url时,就进入如下location匹配
#这个是最低级的匹配,所有请求都会走到这里
location / {
#root关键字定义虚拟主机的根目录, 这里是可以修改的
root /opt/xyz/;
#index参数定义首页文件的名字
index index.html;
}
}
}
Nginx错误页面404优化
server {
listen 80;
server_name www.asdf.com;
#通过error_page参数定义即可
#404.html文件的相对路径为root定义的目录
error_page 404 /404.html;
location / {
root /opt/abc/;
index index.html;
}
}
Nginx反向代理
-
环境准备
-
机器1 192.168.182.130,代理服务器
-
机器2 192.168.182.131,资源服务器
-
-
反向代理服务器配置如下
在代理服务器的配置文件中,找到server{}虚拟主机,在location内设置proxy_pass参数
server {
listen 80;
server_name www.asdf.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
#实现反向代理的功能参数
#实现反向代理的功能参数
#实现反向代理的功能参数
proxy_pass http://192.168.182.131;
}
}
Nginx负载均衡
-
环境准备
-
1台负载均衡服务器
-
192.168.182.130 负载均衡服务器
-
-
2台资源服务器
-
192.168.182.131 资源服务器1
-
192.168.182.132 资源服务器2
-
-
-
在负载均衡服务器配置文件中,定义upstream负载均衡池
#默认轮询方式
upstream test {
server 192.168.182.131;
server 192.168.182.132;
}
#权重方式
upstream test {
server 192.168.182.131 weight=4;
server 192.168.182.132 weight=1;
}
#ip哈希方式,根据用户的来源ip计算出哈希值,永远只指派给一个服务器去解析
#ip哈希不得与权重共同使用
upstream test {
server 192.168.182.131;
server 192.168.182.132;
ip_hash;
}
-
server{}虚拟主机在location内设置proxy_pass参数,将请求转发给负载均衡池
server {
listen 80;
server_name www.asdf.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
#root /opt/abc/;
#index index.html;
#请求转发给负载均衡池
#请求转发给负载均衡池
#请求转发给负载均衡池
proxy_pass http://test;
}
}