Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
环境:
服务器:CentOS 6.8
客户端:Windows 10 14393
大纲:
1、下载nginx源码包
2、编译安装源码包
3、认识目录结构
4、配置虚拟主机
5、实现域名重定向
6、总结
1、=下载nginx源码包==========
nginx版本号nginx1.10.3
wget
##下载nginx源码包
tar zxvf nginx-1.10.3.tar.gz
##解压源码包
cd nginx-1.10.3/
##进入目录
2、=编译安装源码包===========
提示:由于nginx编译时核心组件基本都已经安装了,所以我们只需要接入几个扩展模块就好了
useradd -M -s /sbin/nologin nginx
##创建nginx用户
yum install pcre-devel.x86_64 -y
##安装pcre的devel
yum install openssl-devel.x86_64 -y
##安装openssl的devel
./configure --prefix=/application/nginx1.10.3 --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx
#prefix是nginx的安装路径
#stub_status状态模块,如果不加,后面要开启这个模块就需要重新编译但是不用安装。
#ssl模块
#user指定用户
#指定组
##编译安装比如以上的依赖包,如果是编译安装的一定要在编译的时候指定它的绝对路径否则会报错
echo $?
##查看是否有错误,0表示一切正常
make
##
echo $?
##检查
make install
##安装
echo $?
##检查
ln -s /application/nginx1.10.3/ /application/nginx
##优化链接,驱版本号
3、=认识目录结构==========
cd /application/nginx
##进入目录
├── conf##配置文件
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── mime.types.default
│ ├── nginx.conf##主配置文件
│ ├── nginx.conf.default ##默认主配置文件
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── html##默认站点
│ ├── 50x.html
│ └── index.html
├── logs##日志文件
└── sbin##命令目录
└── nginx##nginx -h可以查看帮助
##提示:nginx的目录结构和操作相比较apache个人感觉是要简单点的。
4、=配置虚拟主机===============
!!/提示:如果已经比较数量apache的虚拟主机,那么nginx的虚拟主机也差不多主要表现形式有以下三种:
基于端口的虚拟主机 ##这个比基于IP的用的要多点
基于IP的虚拟主机 ##这个平时学习也基本不太用
基于域名的虚拟主机 ##这个用的最多了,等等也是用这个来搭建虚拟主机
apache的虚拟主机是在extra扩展配置目录中的httpd-vhosts.conf文件配置,而且这个配置文件要和httpd.conf主配置文件前后呼应才行增加了操作步骤,nginx的则不需要所有操作都在主配置文件中。
在配置虚拟主机之前先来认识下配置文件
/!!
egrep -v "#|^$" conf/nginx.conf.default > conf/nginx.conf
##将主配置文件化复杂为简单,方便学习,egrep也可以是grep -e(扩展的正则表达式)-v是除了什么之外的,^$标示空行,后面就是重定向覆盖了,因为nginx默认就有一个备份的配置文件,所以我们就不用动手了。
vim conf/nginx.conf
worker_processes 1;
##最大的工作进程数,一般和CPU的核心数对应
events {
worker_connections 1024;
##我的给人理解是并发数
}
http {
include mime.types;
##设定mine类型,类型由mime.type文件定义
default_type application/octet-stream;
##默认文件类型
sendfile on;
##nginx调用sendfile函数来输出文件,对于普通应用必须为on。如果用来进行下载磁盘IO重负载应用##可以已设置为off
keepalive_timeout 65;
##长链接超时时间,单位秒
server {
##server标签
listen 80;
##监听端口
server_name localhost;
##域名
location / {
root html;
##站点目录,apache是DocumentRoot,默认站点是htdocs
index index.html index.htm;
##默认识别的网站主页文件,如果不存在直接报错403
}
error_page 500 502 503 504 /50x.html;
##当访问时错误的话就跳转到默认站点下的50x.html页面
location = /50x.html {
root html;
}
}
}
./sbin/nginx
##启动nginx
lsof -i :80
##查看80端口
curl localhost
##本地测试访问,如果没有错误说说明nginx启动成功
!!前面的铺垫已经做好了,下面就进入正题开始配置虚拟主机,基于
a)复制一个server标签,并且复制的server标签一定要在http的标签内
b)更改server_name对应的域名,实现不同域名的访问
c)更改站点路径,并且建立相应的index.html文件,否则会报错一般是403
d)修改测试的客户机的hosts文件
vim conf/nginx.conf
##将配置文件修改为如下
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name ;
location / {
root html/www;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.virtualperson.org;
location / {
root html/blog;
index index.html index.htm;
}
}
server {
listen 80;
server_name net.virtualperson.org;
location / {
root html/net;
index index.html index.htm;
}
}
}
./sbin/nginx -s reload
##平滑重启nginx服务
cd html/
##进入默认站点目录
for name in net www blog;do mkdir $name;echo "$name.virtualperson.org" > ./$name/index.html;done
##使用for循环创建相应的站点目录和主页文件
tree ./
##查看下目录结构
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
##防火墙开启80端口
一下操作在windows10上,也就是客户端:
修改windows10的hosts文件:
win+R-->system32-->drivers-->etc--> hosts添加如下记录
192.168.199.221 net.virtualperson.org blog.virtualperson.org
测试是否能正常解析IP
ping
ping blog.virtualperson.org
ping net.virtualperson.org
使用浏览器输入对应域名显示对应的域名说明测试成功
5、=实现域名重定向===================
为什么要域名重定向:
a)比如一家公司有多个域名,可以把多余域名都指向一台nginx服务器,nginx收到这个域名会把它转成对应的域名。