Nginx安装和简单配置虚拟主机

1 Nginx简介

  Nginx是近几年最火热的http、反向代理服务器,百度阿里等互联网公司也都在使用Nginx,它也可以用作邮件代理服务器、TCP/UDP代理服务器等。Nginx功能和Apache相似,其优点主要在于以下几点:

  1. ①高并发响应性能好,官方nginx处理静态文件并非为5w/s
  2. ②反向代理性能好(可用于负载均衡);
  3. ③内存和cpu占用率低(为Apache1/5~1/10)。

  Nginx是由内核和模块组成,内核设计十分简洁,实现的功能仅仅是:通过查找配置文件将客户端请求映射到一个location block(loaction是nginx配置中的一个指令,用于url匹配),location中所配置的每个指令都会启动不同的模块去完成相应的工作。

2 Nginx安装

  这里我们把Nginx安装在Centos虚拟机上,安装十分简单,按照下边的命令即可安装成功(下载地址不是稳定的,按照需求更改wget后的下载链接 ,官方网址http://nginx.org/en/download.html):

  1. #按装一些工具,pcre用于支持rewrite
  2. yum install pcre-devel pcre -y
  3. yum -y install openssl openssl-devel
  4. #切换到root,下载并解压
  5. cd /usr/src
  6. wget -c http://120.52.51.15/nginx.org/download/nginx-1.14.2.tar.gz
  7. tar -xzf nginx-1.14.2.tar.gz
  8. cd nginx-1.14.2.tar.gz

  9. #查看配置
  10. ./configure --help

  11. #预编译,设置用户wyy1和组wyyy,编译位置为/usr/local/nginx ,添加两个http相关模块
  12. ./configure --user=wyy1 --group=wyyy --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

  13. #编译并安装
  14. make &&make install

安装完成后,转到安装目录 cd /usr/local/nginx ,看到Nginx基本结构如下:

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

几个Nginx常用的命令

  1. ###启动nginx
  2. /usr/local/nginx/sbin/nginx

  3. #1.查看配置文件是否有错误
  4. /usr/local/nginx/sbin/nginx -t
  5. #2.信号量,-s表示signal
  6. #重读配置文件
  7. /usr/local/nginx/sbin/nginx -s reload
  8. #优雅停止nginx
  9. /usr/local/nginx/sbin/nginx -s quit
  10. #强制停止nginx
  11. /usr/local/nginx/sbin/nginx -s stop
  12. #重读日志文件,日志切割时使用
  13. /usr/local/nginx/sbin/nginx -s reopen
  14.  
  15. ###其他
  16. #查看版本号
  17. /usr/local/nginx/sbin/nginx -v
  18. #查看预编译配置(安装时预编译的配置)
  19. /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的欢迎界面。

  1. #最简单的配置
  2. worker_processes 1;
  3. events {
  4. worker_connections 1024;
  5. }
  6. http {
  7. include mime.types;
  8. default_type application/octet-stream;
  9. sendfile on;
  10. keepalive_timeout 65;
  11.  
  12. server {
  13. listen 80; #端口
  14. server_name localhost; #主机名
  15. location / {
  16. root html; #项目根目录
  17. index index.html index.htm; #起始页
  18. }
  19. }
  20. }

  如果我们要使用Nginx部署两个网站,每个网站都部署在一台虚拟主机上,怎么实现呢?

  Nginx添加虚拟主机十分方便,nginx的配置文件中每一个server都表示一个虚拟主机,如果我们想添加一个虚拟主机的话,在配置文件中添加一个server节点,然后执行 /usr/local/nginx/sbin/nginx -s reload 重新加载配置即可。这里我们添加两台虚拟主机,配置如下:

  1. #最简单的配置
  2. worker_processes 1;
  3. events {
  4. worker_connections 1024;
  5. }
  6. http {
  7. include mime.types;
  8. default_type application/octet-stream;
  9. sendfile on;
  10. keepalive_timeout 65;
  11.  
  12. #default server
  13. server {
  14. listen 80;
  15. server_name localhost;
  16. location / {
  17. root html;
  18. index index.html index.htm;
  19. }
  20. }
  21. #www.mysite1.com
  22. server {
  23. listen 80;
  24. server_name www.mysite1.com;
  25. location / {
  26. root /usr/local/nginx/html/mysite1/;
  27. index index.html index.htm;
  28. }
  29. }
  30. #www.mysite2.com
  31. server {
  32. listen 80;
  33. server_name www.mysite2.com;
  34. location / {
  35. root /usr/local/nginx/html/mysite2/;
  36. index index.html index.htm;
  37. }
  38. }
  39. }

  这里我们添加了两台虚拟主机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。):

  1. 192.168.70.132 www.mysite1.com
  2. 192.168.70.132 www.mysite2.com

  然后打开浏览器访问www.mysite1.com和www.mysite2.com,结果如下:

  我们看到mysite1和mysite2都可以正常访问,说明我们的添加的虚拟主机可以正常运行。但是这样有一个问题,如果我们部署了几十个、甚至几百个虚拟主机,那么就要在nginx.conf中添加很多的server节点,如果我们想修改其中某一个server节点,查找和修改起来就比较麻烦,而且也容易误操作。我们可以给每个虚拟主机配置一个配置文件,这样修改某一个虚拟主机的配置就很方便了。

  针对上边的栗子,首先我们创建目录 /usr/local/nginx/conf/vhosts ,这个目录用于存放各个虚拟主机的配置,命令如下:

  1. mkdir /usr/local/nginx/conf/vhosts;
  2. cd /usr/local/nginx/conf/vhosts;
  3. vim www.mysite1.com;

  我们让配置文件的名字和虚拟主机名一致,如www.mysite1.com虚拟主机的配置文件是 vhosts/www.mysite1.com文件,其内容如下:

  1. #www.mysite1.com
  2. server {
  3. listen 80;
  4. server_name www.mysite1.com;
  5. location / {
  6. root /usr/local/nginx/html/mysite1/;
  7. index index.html index.htm;
  8. }
  9. }

  同样www.mysite2.com虚拟主机的配置文件就是 vhosts/www.mysite2.com文件,其内容如下:

  1. #www.mysite2.com
  2. server {
  3. listen 80;
  4. server_name www.mysite2.com;
  5. location / {
  6. root /usr/local/nginx/html/mysite2/;
  7. index index.html index.htm;
  8. }
  9. }

   /usr/local/nginx/conf/nginx.conf 配置文件的内容修改如下:

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10.  
  11. #加载vhosts目录下所有配置
  12. include vhosts/* ;

  执行 /usr/local/nginx/sbin/nginx -s reload 命令重启nginx,然后访问www.mysite1.com和www.mysite2.com均可正常访问。

4 Ngnix平滑升级

  最后补充一下Nginx的升级。如果我们想将Ngnix升级到新版本,但是Nginx已经部署了很多的项目,怎么才能升级Ngnix而不影响我们以前部署的项目呢?这里不再多赘述,完整的升级命令如下:

  1. ### Nginx升级
  2. pkill-9 ngnix ;
    cd /usr/src
  3. #①下载新版本
  4. wget -c http://120.52.51.15/nginx.org/download/nginx-1.xx.xx.tar.gz
  5. #②获取旧版本的配置
  6. /usr/local/nginx/sbin/nginx -V
  7. #③解压安装包
  8. tar -xzf nginx-1.xx.xx.tar.gz
  9. cd nginx-1.xx.x.tar.gz
  10. #④预编译【一定要和旧版本的配置项一致】
  11. ./configure --user=wyy1 --group=wyyy --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  12. #⑤编译
  13. make
  14. #⑥sbin的nginx替换成新版本的nginx
  15. mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
  16. cp /usr/src/nginx-1.14.2/objs/nginx /usr/local/nginx/sbin/nginx

小结:这篇介绍Nginx在Centos上的安装和最简单的配置和添加虚拟主机,下一篇介绍location和rewrite部分。

快速掌握Nginx(一) —— 安装Nginx和简单配置虚拟主机的更多相关文章

  1. dedecms的安装以及为他配置虚拟主机

    一.概念: 1.CMS是:Content Manage System   内容管理系统 内容包括:商品,文章,软件,视频 2.当前市面上常用的CMS有哪些? DedeCMS: 织梦     中小型公司 ...

  2. Nginx学习笔记(二)--- 配置虚拟主机

    Linux下安装Nginx  https://www.cnblogs.com/dddyyy/p/9780705.html 1.虚拟主机介绍 一台服务器分成多个"独立"的主机,每台虚 ...

  3. http 高级配置 虚拟主机,https 编译安装

    目录 http 高级配置 虚拟主机,https 编译安装 http 重定向 https HSTS HSTS preload list http 自带的工具程序 httpd的压力测试工具 实现状态页 反 ...

  4. Nginx安装及配置虚拟主机

    nginx安装部分 依赖环境 yum -y install gcc zlib openssl-devel zlib-devel 1. 下载好下面两个包:nginx-1.8.1.tar.gz pcre- ...

  5. nginx笔记 安装nginx 配置 反向代理 多虚拟主机

    1,检测linux上是否 通过yum安装了nginxrpm   -qi  nginx 2.安装nginx之前的依赖包yum install gcc patch libffi-devel python- ...

  6. Nginx安装、配置虚拟主机、反向代理、负载均衡

    1.   nginx安装 下载nginx: 官方网站: http://nginx.org/ 使用的版本是1.8.0版本. Nginx提供的源码. 1.1. 要求的安装环境 1.需要安装gcc的环境.y ...

  7. nginx下载安装和虚拟机的配置

    一. Nginx下载安装 1.Nginx下载:nginx-1.13.0.tar.gz,下载到:/usr/local/software/ wget http://nginx.org/download/n ...

  8. Win10子系统Ubuntu安装nginx (win10 安装 nginx)

    更新仓库,下载nginx: sudo apt update sudo apt install nginx 检查版本: nginx –v 启动服务: sudo  nginx sudo  service ...

  9. nginx 配置虚拟主机

    文章转载自:http://www.ttlsa.com/html/1571.html 上篇说道我们的nginx是安装在/usr/local/nginx/ cd conf 我们现在把所有的虚拟主机放在一个 ...

随机推荐

  1. 深入浅出ES6教程模块化

    大家好,本人名叫苏日俪格,大家叫我 (格格) 就好,在上一章节中我们学到了Promise的用法,下面我们一起来继续学习模块化: JavaScript本身是不支持模块化的,只不过后来一些社区的大佬制定了 ...

  2. 怎樣添加設置GridView,CheckBox全選功能

    GridView內CheckBox控件全選設置 不需要添加後台代碼操作,前端即可完成設置,如下: 前端代碼: 1.設置javascript. <html xmlns="http://w ...

  3. Shell中数组的使用

    数组是一个很有用的数据结构,经常使用的功能有初始化,遍历,查找,获取数组长度等操作 一.初始化 小括号中使用空格分开的数据结构就是一个数组,也可使用下标添加元素 arr=(1 'nice' '2day ...

  4. 在比特币的OP_RETURN上,大家都干了些啥?

    我在之前的一篇文章中介绍了怎么通过C#将一句话写入到比特币的区块链网络中,最近花了好几天的时间,我终于把比特币的区块链数据载入到了SQLServer(具体做法参加我的这篇博客:http://www.c ...

  5. TensorRT&Sample&Python[yolov3_onnx]

    本文是基于TensorRT 5.0.2基础上,关于其内部的yolov3_onnx例子的分析和介绍. 本例子展示一个完整的ONNX的pipline,在tensorrt 5.0的ONNX-TensorRT ...

  6. python基础 常见用法

    1.python计时器timeit模块 1)timeit 模块定义了接收两个参数的Timer类,两个参数都是字符串. 参数1:要计时的语句或者函数 参数2:为参数1构建环境的导入语句 2)Timer对 ...

  7. Linux下的crontab

    Ubuntu服务器/var/log下没有cron日志,这里记录一下如何ubuntu server如何查看crontab日志 crontab记录日志 修改rsyslog sudo vim /etc/rs ...

  8. JAVA之字符串

    求字符串长度: 使用.length()方法: 注意:字符串是使用字符串类里的方法,而数组是用数组类里的变量,因此数组是.length. String str="123456789" ...

  9. Oracle查询字符串数据进行排序,以及去重复

    原本的的一张表,填写数据的字段为字符串varchar2类型,然后进行排序的时候,就会出现问题.会默直接默认判断为第一个数字9最大,而不判断整个数字的大小. 所以,就要用到TO_NUMBER函数 sel ...

  10. this直接加在函数或者是 “原型”对象的区别

    如果加在函数上,可以用函数直接调用,如果是加在原型对象时,那就的创建新对象,才能使用,最重要的是影响继承 直接加在函数上的,不能被新对象继承