阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS上安装Nginx服务器实现虚拟主机和域名重定向

137次阅读
没有评论

共计 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 文件

CentOS 上安装 Nginx 服务器实现虚拟主机和域名重定向

访问后将会会根据我们的设定跳转到 net.virtualperson.org

CentOS 上安装 Nginx 服务器实现虚拟主机和域名重定向

## 提示:重定向的 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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7944字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中