共计 7944 个字符,预计需要花费 20 分钟才能阅读完成。
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 http://nginx.org/download/nginx-1.10.3.tar.gz
## 下载 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 www.virtualperson.org;
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 www.virtualperson.org
测试是否能正常解析 IP
ping www.virtualperson.org
ping blog.virtualperson.org
ping net.virtualperson.org
使用浏览器输入对应域名显示对应的域名说明测试成功
5、= 实现域名重定向 ===================
为什么要域名重定向:
a) 比如一家公司有多个域名,可以把多余域名都指向一台 nginx 服务器,nginx 收到这个域名会把它转成对应的域名。
b) 比如我们在某个域名提供商哪里购买了域名,然而我们自己并没有服务器,就可以把我们的域名指向某个有流量比较大的 IP,地址,然后把把域名发不出去,可以利用这个方法给我们的域名刷流量。所以我们就需要在 nginx 服务器做域名重定向,因为在 nginx 服务器不识别的域名访问服务器,等同于 IP 直接访问,收到以 IP 的形式直接访问,我们可以选择拒绝,也可以设置为跳转到我们正真的域名上去。
## 说的不是很清除,语文一直不是很好,请原谅。
pwd
/application/nginx/conf
## 查看当前的工作路径
实例一多域名访问同一服务器:
vim 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 otherdomainname.org;
rewrite ^/(.*) http://net.virtualperson.org/$1 permanent;
}
server {
listen 80;
server_name www.virtualperson.org;
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 服务
在 Windows 端测试,别忘了修改 hosts 文件
访问后将会会根据我们的设定跳转到 net.virtualperson.org
## 提示:重定向的 server 标签一定要在最前面,否则没有效果。
实例二拒绝 IP 直接访问:
前面说了只要是服务器未知的域名都是以 IP 的形式直接访问本机,所以我们可以拒绝 IP 的直接访问,配置如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server{
listen 80;
return 500;
}
server {
listen 80;
server_name otherdomainname.org;
rewrite ^/(.*) http://net.virtualperson.org/$1 permanent;
}
server {
listen 80;
server_name www.virtualperson.org;
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;
}
}
}
附加:
!!以下内容,为附加内容,可以了解下
vim nginx.conf
………………
server {
listen 80;
server_name net.virtualperson.org;
location / {
root html/net;
index index.html index.htm;
}
}
server {
listen 80;
server_name status.virtualperson.org;
stub_status on;
access_log off;
}
}
../sbin/nginx -s reload
## 重启 nginx 服务
通过 Windows10 浏览器访问域名:status.virtualperson.org 得到如下结果:
Active connections: 2
## 当前的活动连接,正在处理的活动连接数
server accepts handled requests
##server 表示 nginx 启动到现在一共处理了多少个成功的链接
##accepts 表示 nginx 一共处理了的握手次数
## 握手次数 - 处理的连接 = 错误连接(请求丢失次数)##hangled 表示共处理了多少次请求
48 48 27
Reading: 0 Writing: 1 Waiting: 1
##reading 读取到客户端的 header 信息数
## 返回给客户端的 header 信息
##waiting 已经处理完成正在等待下一次请求指令的驻留链接,开启 keep-alive 的情况,这个值等与 action-(reading+writeing)
日志管理:nginx 的日志分割操作我用的最多的就是利用 crond 和 mv 命令来实现的,这个简单也不需要在安装其他的工具。
6、= 总结 =====================
a)搭建 Nginx 前最好先去搭建下 apache,毕竟经典啊,而且有关网站统计,Apache 使用的还是挺多的,而且熟悉 Apache 也为更好的学习 Nginx 奠定了基础。
b)了解 Apache 和 Nginx 的区别和优缺点,可以让你能更更加方便的选择对应的服务。
c)Nginx 的配置相对简单,而且目录结构简单,容易上手,Nginx 占用资源小,高并发。
d) 采用了比较新的 epoll 模型,而 apache 采用的是 select 模型。
e)Nginx 支持反向代理,提高访问速度
————————————– 分割线 ————————————–
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm
Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm
Nginx 的详细介绍 :请点这里
Nginx 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-04/142642.htm