Nginx服务器的搭建 |
您所在的位置:网站首页 › 虚拟代理服务器 › Nginx服务器的搭建 |
【Nginx理论】 Nginx技能要点 Nginx安装与配置 Nginx虚拟主机 Nginx反向代理 一、nginx简介(能够提供网站服务 和 代理服务 开源软件) Nginx是俄罗斯人编写的十分轻量级的HTTP服务器 是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP代理服务器 网站服务器类型 Apache Nginx tomcat(java语言编写) nginx 默认地址重写(修改用户访问的url) conf配置文件 nginx.conf 主配置文件 html网页目录 logs日志文件 sbin服务启动脚本 绝对路径启动服务 /usr/local/nginx/sbin/naginx //直接启动服务,不做任何配置 相对路径启动服务 ./nginx //直接启动服务,不做任何配置 启动服务 ./nginx [选项] 例 ./nginx -t -t //测试主配置文件有没有错误 -v //查看nginx软件的版本 -V //查看安装时候的配置信息 -c //启动服务时使用哪一个配置文件 [nginx.conf nginx2.conf] -h //查看帮助信息 -s //关闭服务 #./nginx -s stop sbin/nginx -c conf/nginx2.conf //-c后面加上要启动的配置文件名,不加-c默认启动nginx.conf nginx.conf nginx2.conf 用 停止nginx服务 (信号不区分大小写) 格式 : pkill/kill -信号 进程名/pid号 例子 : pkill -int nginx 信号 TERM, INT 快速关闭 QUIT从容关闭,关闭主进程顺便关闭工作子进程 HUP 重载配置用新的配置开始新工作进程从容关闭旧的工作进程 USR1重新打开日志文件 USR2平滑升级可执行程序 WINCH从容关闭工作进程,不会立即关闭子进程 配置说明 安装目录/conf/nginx.conf 全局配置:写在容器外,对所有容器生效 局部配置:写在容器内,只对当前容器有效 全局配置和局部配置同时配置时,局部配置生效 Nginx反向代理服务方式 1、轮询(默认的)每个按请求按时间顺序逐一分配到不同的后端服务器 如果后断服务器down掉能自动剔除 2、Weight 指定轮询几率 权重和访问比率成正比 通常用于后断服务器性能不同的情况默认值为1 Weight=3 weight=2 3、ip_hash 每个请求,按访问ip地址的hash结果分配 这样可以让每个访客固定访问一个后端服务器,可 以解决session的问题 4、Fair 按后端服务器的响应时间来分配请求 响应时间短的优先分配(装第三方软件才可以使用) 后端服务器组主机设置详细信息 down表示当前的server暂时不参与负载 backup 其他所有的非backup机器down或者忙的时候 请求会发给backup机器, 所以这台机器压力会最轻 max_fails 允许请求失败的次数 默认为1 当超过最大次数时 返回proxy_next_upstream模块 定义的错误 fail_timeout max_fails次失败后 暂停提供服务的时间 修改主配置文件 vi /usr/lcoal/nginx/conf/nginx.conf http { upstream服务器组名{ server真正提供服务的服务器的ip地址:端口号; server 真正提供服务的服务器的ip地址:端口号; } server{ ... location / { ... proxy_pass http://服务器组名;//允许整个组被轮询访问 proxy_pass http://ip:80;//设置单独一个IP被访问 } } }
配置主配置文件,默认轮询方式 #cd /usr/lcoal/nginx/conf vi nginx.conf http { upstream webgrp { server192.168.1.10:80; server 192.168.1.100:80; } server{ ... location / { ... proxy_pass http://webgrp; //允许整个组被轮询访问 #proxy_pass http://192.168.1.10:80; //设置单独一个IP被访问 } }
}
权重方式配置 #vi nginx.conf http{ upstream webgrp { server 192.168.1.10:80 weight=2;//5次访问2次 server 192.168.1.100:80 weight=3;//5次访问3次 } ... }
ip_hash方式配置 http{ upstream webgrp{ ip_hash;//每个访问客固定访问一个后端服务器 server 192.168.1.10; server 192.168.1.100; ... } }
上述三种配置方式需分开使用 #cd ..;cd sbin #pkill -hup nginx 公网客户端测试 #elinks --dump http://1.1.1.254
后端服务器组设置 http{ upstream webgrp { server 192.168.1.1:80 weight=2; server 192.168.1.10:80 down; //设置为down状态,服务器请求不会发到这台主机 server 192.168.1.100:80 max_fails=2 fail_timeout=30; //请示最大失败次数2次,30秒内不再提供服务 server 192.168.1.101:80 backup; //这台机器性能低,当其他机器不能提供服务的时候,就用使用备份这台服务器 } ... } 网页根目录 location / { ... } 用来匹配用户访问web服务器时的URL 可以使用正则表达式匹配用户URL http://www.baidu.com/music/3.mp3 .html .php .css ~ 区分字母大小写匹配 ~* 不区分字母大小写匹配 !~ 区分字母大小写不匹配 !~* 不区分字母大小写不匹配 防盗链: 别的网站盗用了我网站的图片,客户端能通过访问别的公司的网站,点击链接却跳到了我公司的页面 消耗我公司的资源和带宽,因此需要做防盗链,防止别人盗我公司的图片链接 不区分大小写匹配 以这些做后辍名 location ~* \.(gif|jpg|png|swf|flv)$ { valid_referersnoneblocked www.wsyht.com *.nginx.com; 来源 没来源 防火墙来的 域 名来的 无效 引擎 if($invalid_referer){ #上面后辍名以上面的那些来源访问的的就可以访问,不匹配就返回下面的错误页面 #rewrite ^/ http://192.168.1.254/error.html #返回错误页面 return 404; #或错误返回404 } } nginx可以用本地模块做防盗链 也可以用第三方模块做防盗链 第三方模块 nginxhttpaccessmodules 【Nginx搭建】 一、搭建Nginx服务器(Redhat5.9) 用地址192.168.2.1的服务器做网站服务器 准备工作: #netstat -tulnp | grep :80 #service httpd stop #chkconfig --level 35 httpd off #yum -y groupinstall "开发工具" "开发库" #yum -y install gcc gcc-c++ make #yum -y install pcre-devel 安装(源码Nginx包) #cd #useradd -M -s /sbin/nologin nginx #tar -zxvf nginx-0.8.55.tar.gz #cd nginx-0.8.55 #./configure \ > --prefix=/usr/local/nginx \ > --user=nginx \ > --group=nginx \ > --with-http_stub_status_module \ #提供nginx状态查看功能 > --with-http_ssl_module #(依赖于openssl openssl-devel) 后期可以通过https访问web服务器 #make && make install
启动服务 #./nainx
访问本机网页 #elinks --dump http://localhost
二、平滑升级(在不停止服务的情况下升级软件版本) #cd #tar -zxvf nginx-1.0.5.tar.gz #cd nginx-1.0.5 #./configure \ > --prefix=/usr/local/nginx \ > --user=nginx \ > --group=nginx \ > --with-http_stub_status_module \ > --with-http_ssl_module \ > --with-http_gzip_static_module #make #cd objs #mv /usr/local/nginx/sbin/nginx nginx.old #cp nginx /usr/local/nginx/sbin/ #cd .. #make upgrade #/usr/local/naginx/sbin/nginx -v #elink --dump http://localhost
三、配置Nginx虚拟主机(修改/usr/local/nginx/conf/) 实验1: 配置基于域名的虚拟主机(通过主机名区分用户的访问)
修改主配置文件 #cd /usr/local/nginx/conf #vi nginx.conf ... http{ server{ listen 80; server_name www.wsyht.com; location / { root /www; index index.html; } } server{ listen 80; server_name bbs.wsyht.com; location / { root /bbs; index index.html; }
}
} ...
创建网页目录和网页文件 #mkdir /www;echo www.wsyht.com > /www/index.html #mkdir /bbs;echo bbs.wsyht.com > /bbs/index.html
检测服务 #/usr/local/nginx/sbin/nginx -t
关闭重启服务 #/usr/loca/nginx/sbin/nginx -s stop #/usr/local/nginx/sbin/nginx
修改host文件(域名解析) #vi /etc/hosts ... 192.168.2.1www.wsyht.comwww 192.168.2.1bbs.wsyht.combbs 测试 #elinks --dump http//www.wsyht.com #elinks --dump http//bbs.wsyht.com 实验二: 配置基于端口的虚拟主机 修改主配置文件 #cd /usr/local/nginx/conf/ #vi nginx.conf ... http{ server{ listen 8080; server_name dns.baidu.com; location / { root /dns; index index.html; } } server{ listen 8090; server_name blog.baidu.com; location / { root /blog; index index.html; } } ... 创建网页目录和网页文件 #mkdir /dns;echo "www.baidu.com" > /dns/index.html #mkdir /blog;echo "bbs.baidu.com" > /blog/index.html 服务测试重启 #/usr/local/nginx/sbin/nginx -t #pkill -hup nginx 修改host文件(域名解析) #vi /etc/hosts ... 192.168.2.1 www.baidu.com www 192.168.2.1 bbs.baidu.com bbs 测试 elinks --dump http://www.baidu.com:8080 elinks --dump http://bbs.baidu.com:8090
实验三 配置基于ip的虚拟主机
修改主配置文件 #cd /usr/local/nginx/conf/ #vim nginx.conf ... http{ server{ listen 192.168.2.2:80; server_name mail.baidu.com; location / { root /mail; index index.html; } } server{ listen 192.168.2.3:80; server_name fack.baidu.com; location / { root /fack index index.html; } } ...
创建网页目录和网页文件 #mkdir /mail;echo "mail.baidu.com" > /mail/index.html #mkdir /fack;echo "fack.baidu.com" > /fack/index.html 服务测试重启 #/usr/local/nginx/sbin/nginx -t #pkill -hup nginx 修改host文件(域名解析) #vi /etc/hosts ... 192.168.2.2 mail.baidu.com mail 192.168.2.3 fack.baidu.com fack 添加临时虚拟网卡端口 #ifconfig eth0:0 192.168.2.2 #ifconfig eth0:0 192.168.2.3 测试 #elinks --dump http://192.168.2.2 #elinks --dump http://192.168.2.3 四、客户端访问控制 ... http{ server{ listen www.baidu.com:80; server_name www.baidu.com; location / { allow 192.168.2.2 //允许2.2访问 deny all //拒绝所有 root /www; index index.html; } } server{ listen www.baidu.com:80; server_name www.baidu.com; location / { deny 192.168.2.2//拒绝2.2访问 allow all//允许所有 root /www; index index.html; } } } ... 五、用户访问控制 #cd /usr/local/nginx/conf #vi nginx.conf ... http{ server{ listen www.baidu.com:80; server_name www.baidu.com; location / { auth_basic "auth-domain" //指定认证域的名字,名字随便取 auth_basic_user_file /usr/local/nginx/conf/authuser.txt //保存用户名的文件,最后面文件名随便取 root /www; index index.html; } } ... #htpasswd -c /usr/local/nginx/conf/authuser.txt admin //创建文件authuser.txt和访问用户名admin,密码随便填 #htpasswd /usr/local/nginx/conf/authuser.txt jack //创建用户名jack,密码随便填 六、Nginx反向代理
拓扑图: 公网客户端 1.1.1.1 http://1.1.1.254 | 1.1.1.254 | | nginx | 反向代理服务器 | 192.158.1.254 | | ---------------------------------------------- | | web_A web_B 192.168.1.10 192.168.1.100
1、配置内网的2台网站服务器 并编写首页文件 详细过程请参考最上面实验,过程略... 2、开启nginx服务器 详细过程请参考最上面实验,过程略... 3、配置nginx反向代理 配置主配置文件,默认轮询方式 #cd /usr/lcoal/nginx/conf vi nginx.conf http { upstream webgrp { server192.168.1.10:80; server 192.168.1.100:80; } server{ ... location / { ... proxy_pass http://webgrp; //允许整个组被轮询访问 } }
}
重启服务 #cd ..;cd sbin #pkill -hup nginx
公网客户端测试 #elinks --dump http://1.1.1.254 防盗料 拓扑图: 192.168.1.10------------192.168.1.100------------------192.168.1.254 客户端 盗链网站nginx网站服务器(配置图片防盗链) 盗链网站配 启动服务 #servcie httpd start 编写网页文件 #cat /var/www/html/test.html
show p_w_picpath
重启服务 #service httpd restart Nginx网站服务器配置 在主配置文件配置防盗链 vi /usr/local/nginx/conf/nginx.conf http{ server{ ... location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.wsyht.com *.nginx.com;
if ($invalid_referer) { rewrite ^/ http://192.168.1.254/error.html #return 404; } } ... } }
配置错误文件 #echo "Error Page" > /usr/local/nginx/html/error.html
编写网页文件 #cat /var/www/html/test.html
show p_w_picpath
重启服务 #pkill -hup nginx 客户端配置 安装图形界面 #yum groupinstall -y "图形" //支持图形页面浏览 修改host文件 #vi /etc/hosts ... |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |