快速掌握Nginx(一) —— 安装Nginx和简单配置虚拟主机
Nginx安装和简单配置虚拟主机
1 Nginx简介
Nginx是近几年最火热的http、反向代理服务器,百度阿里等互联网公司也都在使用Nginx,它也可以用作邮件代理服务器、TCP/UDP代理服务器等。Nginx功能和Apache相似,其优点主要在于以下几点:
①高并发响应性能好,官方nginx处理静态文件并非为5w/s;
②反向代理性能好(可用于负载均衡);
③内存和cpu占用率低(为Apache的1/5~1/10)。
Nginx是由内核和模块组成,内核设计十分简洁,实现的功能仅仅是:通过查找配置文件将客户端请求映射到一个location block(loaction是nginx配置中的一个指令,用于url匹配),location中所配置的每个指令都会启动不同的模块去完成相应的工作。
2 Nginx安装
这里我们把Nginx安装在Centos虚拟机上,安装十分简单,按照下边的命令即可安装成功(下载地址不是稳定的,按照需求更改wget后的下载链接 ,官方网址http://nginx.org/en/download.html):
#按装一些工具,pcre用于支持rewrite
yum install pcre-devel pcre -y
yum -y install openssl openssl-devel #切换到root,下载并解压
cd /usr/src
wget -c http://120.52.51.15/nginx.org/download/nginx-1.14.2.tar.gz
tar -xzf nginx-1.14.2.tar.gz
cd nginx-1.14.2.tar.gz
#查看配置
./configure --help
#预编译,设置用户wyy1和组wyyy,编译位置为/usr/local/nginx ,添加两个http相关模块
./configure --user=wyy1 --group=wyyy --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#编译并安装
make &&make install
安装完成后,转到安装目录 cd /usr/local/nginx ,看到Nginx基本结构如下:

通过命令 /usr/local/nginx/sbin/nginx 就可以启动Nginx,Nginx的默认端口是80,我们在电脑的浏览器中输入虚拟机的IP,如果看到如下界面表示Nginx安装成功了

几个Nginx常用的命令
###启动nginx
/usr/local/nginx/sbin/nginx
#1.查看配置文件是否有错误
/usr/local/nginx/sbin/nginx -t
#2.信号量,-s表示signal
#重读配置文件
/usr/local/nginx/sbin/nginx -s reload
#优雅停止nginx
/usr/local/nginx/sbin/nginx -s quit
#强制停止nginx
/usr/local/nginx/sbin/nginx -s stop
#重读日志文件,日志切割时使用
/usr/local/nginx/sbin/nginx -s reopen ###其他
#查看版本号
/usr/local/nginx/sbin/nginx -v
#查看预编译配置(安装时预编译的配置)
/usr/local/nginx/sbin/nginx -V
3 简单配置和添加虚拟主机
为了便于理解,我们把 /usr/local/nginx/conf/nginx.conf 配置文件的内容替换为如下内容,server节点下的listen为监听的端口,Nginx的默认端口是80;server_name是虚拟主机的名字;location表示当接收到一个请求后怎么去映射:默认映射到 /usr/local/nginx/html/ 目录下的index.html,index.htm文件。我们通过 nginx -s reload 命令重启Nginx服务器,再次访问虚拟机IP仍然可以跳转到Nginx的欢迎界面。
#最简单的配置
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 localhost; #主机名
location / {
root html; #项目根目录
index index.html index.htm; #起始页
}
}
}
如果我们要使用Nginx部署两个网站,每个网站都部署在一台虚拟主机上,怎么实现呢?
Nginx添加虚拟主机十分方便,nginx的配置文件中每一个server都表示一个虚拟主机,如果我们想添加一个虚拟主机的话,在配置文件中添加一个server节点,然后执行 /usr/local/nginx/sbin/nginx -s reload 重新加载配置即可。这里我们添加两台虚拟主机,配置如下:
#最简单的配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #default server
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
#www.mysite1.com
server {
listen 80;
server_name www.mysite1.com;
location / {
root /usr/local/nginx/html/mysite1/;
index index.html index.htm;
}
}
#www.mysite2.com
server {
listen 80;
server_name www.mysite2.com;
location / {
root /usr/local/nginx/html/mysite2/;
index index.html index.htm;
}
}
}
这里我们添加了两台虚拟主机www.mysite1.com和www.mysite2.com,www.mysite1.com主机对应的网站目录为 /usr/local/nginx/html/mysite1/ ,该目录下有index.html文件,内容如下图。mysite2也是一样的结构。

在我们的电脑上打开 C:\Windows\System32\drivers\etc 目录,修改该目录下的hosts文件,添加两个DNS映射(简单说明:添加DNS映射后,输入www.mysite1.com就会被解析为IP地址192.160.70.132。):
192.168.70.132 www.mysite1.com
192.168.70.132 www.mysite2.com
然后打开浏览器访问www.mysite1.com和www.mysite2.com,结果如下:


我们看到mysite1和mysite2都可以正常访问,说明我们的添加的虚拟主机可以正常运行。但是这样有一个问题,如果我们部署了几十个、甚至几百个虚拟主机,那么就要在nginx.conf中添加很多的server节点,如果我们想修改其中某一个server节点,查找和修改起来就比较麻烦,而且也容易误操作。我们可以给每个虚拟主机配置一个配置文件,这样修改某一个虚拟主机的配置就很方便了。
针对上边的栗子,首先我们创建目录 /usr/local/nginx/conf/vhosts ,这个目录用于存放各个虚拟主机的配置,命令如下:
mkdir /usr/local/nginx/conf/vhosts;
cd /usr/local/nginx/conf/vhosts;
vim www.mysite1.com;
我们让配置文件的名字和虚拟主机名一致,如www.mysite1.com虚拟主机的配置文件是 vhosts/www.mysite1.com文件,其内容如下:
#www.mysite1.com
server {
listen 80;
server_name www.mysite1.com;
location / {
root /usr/local/nginx/html/mysite1/;
index index.html index.htm;
}
}
同样www.mysite2.com虚拟主机的配置文件就是 vhosts/www.mysite2.com文件,其内容如下:
#www.mysite2.com
server {
listen 80;
server_name www.mysite2.com;
location / {
root /usr/local/nginx/html/mysite2/;
index index.html index.htm;
}
}
/usr/local/nginx/conf/nginx.conf 配置文件的内容修改如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65; #加载vhosts目录下所有配置
include vhosts/* ;
执行 /usr/local/nginx/sbin/nginx -s reload 命令重启nginx,然后访问www.mysite1.com和www.mysite2.com均可正常访问。
4 Ngnix平滑升级
最后补充一下Nginx的升级。如果我们想将Ngnix升级到新版本,但是Nginx已经部署了很多的项目,怎么才能升级Ngnix而不影响我们以前部署的项目呢?这里不再多赘述,完整的升级命令如下:
### Nginx升级
pkill-9 ngnix ;
cd /usr/src;
#①下载新版本
wget -c http://120.52.51.15/nginx.org/download/nginx-1.xx.xx.tar.gz
#②获取旧版本的配置
/usr/local/nginx/sbin/nginx -V
#③解压安装包
tar -xzf nginx-1.xx.xx.tar.gz
cd nginx-1.xx.x.tar.gz
#④预编译【一定要和旧版本的配置项一致】
./configure --user=wyy1 --group=wyyy --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#⑤编译
make
#⑥sbin的nginx替换成新版本的nginx
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp /usr/src/nginx-1.14.2/objs/nginx /usr/local/nginx/sbin/nginx
小结:这篇介绍Nginx在Centos上的安装和最简单的配置和添加虚拟主机,下一篇介绍location和rewrite部分。
快速掌握Nginx(一) —— 安装Nginx和简单配置虚拟主机的更多相关文章
- dedecms的安装以及为他配置虚拟主机
一.概念: 1.CMS是:Content Manage System 内容管理系统 内容包括:商品,文章,软件,视频 2.当前市面上常用的CMS有哪些? DedeCMS: 织梦 中小型公司 ...
- Nginx学习笔记(二)--- 配置虚拟主机
Linux下安装Nginx https://www.cnblogs.com/dddyyy/p/9780705.html 1.虚拟主机介绍 一台服务器分成多个"独立"的主机,每台虚 ...
- http 高级配置 虚拟主机,https 编译安装
目录 http 高级配置 虚拟主机,https 编译安装 http 重定向 https HSTS HSTS preload list http 自带的工具程序 httpd的压力测试工具 实现状态页 反 ...
- Nginx安装及配置虚拟主机
nginx安装部分 依赖环境 yum -y install gcc zlib openssl-devel zlib-devel 1. 下载好下面两个包:nginx-1.8.1.tar.gz pcre- ...
- nginx笔记 安装nginx 配置 反向代理 多虚拟主机
1,检测linux上是否 通过yum安装了nginxrpm -qi nginx 2.安装nginx之前的依赖包yum install gcc patch libffi-devel python- ...
- Nginx安装、配置虚拟主机、反向代理、负载均衡
1. nginx安装 下载nginx: 官方网站: http://nginx.org/ 使用的版本是1.8.0版本. Nginx提供的源码. 1.1. 要求的安装环境 1.需要安装gcc的环境.y ...
- nginx下载安装和虚拟机的配置
一. Nginx下载安装 1.Nginx下载:nginx-1.13.0.tar.gz,下载到:/usr/local/software/ wget http://nginx.org/download/n ...
- Win10子系统Ubuntu安装nginx (win10 安装 nginx)
更新仓库,下载nginx: sudo apt update sudo apt install nginx 检查版本: nginx –v 启动服务: sudo nginx sudo service ...
- nginx 配置虚拟主机
文章转载自:http://www.ttlsa.com/html/1571.html 上篇说道我们的nginx是安装在/usr/local/nginx/ cd conf 我们现在把所有的虚拟主机放在一个 ...
随机推荐
- Redmine入门-安装
Redmine提供了两种方式安装,如果仅仅只是使用Redmine,建议采用一键安装的方式,快捷方便.如果需要做二次开发或者更多的个性化处理,可以采用源码安装方式,下面分别介绍两种安装方式. ----- ...
- js坚持不懈之16:使用js向HTML元素分配事件
向 button 元素分配 onclick 事件: <!DOCTYPE html> <html> <body> <p>点击按钮就可以执行 <em& ...
- zabbix调用api检索方法
环境 zabbix:172.16.128.16:zabbix_web:172.16.16.16/zabbix 用户名:Admin 密码:zabbix 获取的数据仅做参考,以Linux发送HTTP的PO ...
- JSX有感
开发一个网页,我们要写视图部分HTML,也要写交互逻辑JS. 写JS时,不断翻看HTML,确保querySelector能取到期望的元素. 改HTML时,一个个排查JS文件,确保其没受影响. -- 类 ...
- 51Nod 1004 n^n的末位数字
思路:首先将0~9的平方的尾数放在一个数组a里面,方便后面直接调用,因为不论多大的数做什么运算,得到的结果的最后一位数只和运算前所有数的最后一位数有关系.新建变量d,z一个是底数,一个是幂次.循环判断 ...
- CSAPP:第十一章 网络编程
CSAPP:第十一章 网络编程 11.1 客户端服务器模型11.2 全球IP因特网11.3 套接字接口 11.1 客户端服务器模型 每个网络应用都是基于客户端-服务器模型.采用这个模型,一个应用是 ...
- python defaultdict模块
from collections import defaultdict '''默认值字典'''d = defaultdict(lambda :123)print(d)print(type(d))pri ...
- selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据
简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...
- vue -- element
1.页面 加载初始化 (function () { })();2.input 绑定键盘事件 @keyup.enter.native="onEnterSearch"@keyup.es ...
- js工具方法
获取页面链接中的参数,以数组形式返回: function getParamsFromHref() { var parameters = window.location.search.substr(1) ...