CentOS7下Nginx服务器安装与使用教程

Nginx服务器简介

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。其特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx对比Apache优点

1、轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源

2、抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。

3、nginx 处理静态文件好,静态处理性能比 apache 高三倍以上

4、nginx 作为负载均衡服务器,支持 7 层负载均衡

5、nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器

6、nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃

Centos7下安装nginx

前言:如果你还没有自己的服务器 请参考 教你从零开始搭建阿里云ESC服务器 此文章会详细的介绍 如何搭建自己的服务器 并且此文章基于上述服务器搭建教程目录结构等 此文章为新手教程文章 高手勿喷 有什么问题可以在文章下方进行留言

一、安装所需要的环境

1、gcc 安装

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install gcc-c++

ps:忘了提一嘴 xshell5 粘贴的命令是 shift+ins 复制是ctrl+ins

2、PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

yum install -y pcre pcre-devel

3、zlib 安装 zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

4、OpenSSL 安装 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

yum install -y openssl openssl-devel

二、下载并安装Nginx

1、下载nginx(不推荐)

直接下载.gz安装包 官网地址:https://nginx.org/en/download.html

2、使用命令下载

wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

这里使用的是最新稳定版本Nginx 下载后如图(会下载到当前目录下)

3、解压nginx安装包

tar -zxvf nginx-1.12.2.tar.gz

4、使用默认配置(这里推荐使用默认配置)

cd nginx-1.12.2
./configure

5、编译安装

make
make install

注意:代码要一行一行执行 防止出现未知错误

安装成功之后 安装的路径在 /usr/local/nginx 此文件夹内

6、Nginx一些命令

首先进入nginx的sbin目录下

cd /usr/local/nginx/sbin/

启动命令:./nginx

关闭命令:

./nginx -s stop

或./nginx -s quit

./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。 ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

从新加载配置文件(用于修改nginx配置文件后使其生效)

./nginx -s reload

7、启动nginx

./nginx

nginx启动以后 在地址栏输入你服务器外网的ip地址 如果出现如下图所示 那么恭喜你nginx安装成功

Nginx常用功能

我只能说Nginx的功能太多了 一一举例是不可能的 这里就举几个常用的功能来进行配置

一、开启反向代理 并设置动静分离

什么是反向代理

客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

什么是动静分离

何谓动?何谓静呢?那我们java来说jsp、servlet等就是动,因为其离开我们的tomcat服务器的支持就会无法正常工作。而js、css等文件就是静了。因为离开tomcat他一样能正常工作啊! 分开的话 减少tomcat的负担

步骤:

1、移动到nginx文件夹里面的bin文件夹

cd /usr/local/nginx/conf/

2、编辑nginx.conf文件

注意:这里说一下 如果不是特别熟悉linux的编辑器 那编辑起来简直就是很麻烦

这时候我们可以使用xftp5 将此配置文件拖到电脑里面 用window的编辑器来编辑会好的多 编辑以后在上传回去 当然了 教程还是要用vi编辑的(不熟悉vim)

vi nginx.conf

在配置文件中server{}标签的上面 http{}标签的里面添加如下代码

配置反向代理服务器

#tomcat反向代理服务器
upstream xx.com {
server    localhost:8080      weight=1;
}

在配置文件中 #开头的是注释代码

xx.com为此代理服务器的地址 记住 后面要用到

localhost:8080 是tomcat服务器在你此服务器的地址

大概位置如图所示:

3、配置代理参数

与server{}标签同级添加如下配置代码

#配置代理参数
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 65;
proxy_send_timeout 65;
proxy_read_timeout 65;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;

4、设置动静分离配置代码

将以下代码添加到server{}标签内

location ~\.(jsp|do)$ {
    #动态文件走tomcat服务器
    proxy_pass  http://hs.com;
}
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
    #静态文件走nginx动态服务器
    #这里需要指定一个静态文件的地址 
    #在部署项目的时候需要将项目放到此文件夹内
    root /web_project;      
    expires 30d; #缓存30天 
}
location ~ .*\.(js|css)?$ {
    #静态文件走nginx动态服务器
    #这里需要指定一个静态文件的地址 
    #在部署项目的时候需要将项目放到此文件夹内
    root /web_project; 
    expires 30d; #缓存30天
}

ps:静态文件夹可以按照自己的需求来定 我将静态文件夹放到根下 所以要在根目录下创建 web_project文件夹 项目部署的时候放在tomcat 里面一份 放到此文件夹里面一份

动静分离到此结束 可以做一个小测试 写一个jsp界面 里面带一张图片 启动tomcat 启动nginx 将项目部署到tomcat 打开网页 图片不会显示 将项目部署到静态文件夹下面 刷新网页 图片正常显示 那么就成功了

二、开启压缩传输

何为压缩传输?顾名思义 就是传输文件的时候压缩了以后在传呗 减少服务器负担 传输快!!

步骤1、

在配置文件中server{}标签的上面 http{}标签的里面添加如下代码

#开启压缩传输;
gzip on;
gzip_min_length 1k;  #最小1K
gzip_buffers 16 64K;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
gzip_vary on;

重启nginx 搞定! 有兴趣的可以使用浏览器的开发者工具来观察一下

三、配置tomcat服务器集群

何为集群?

一个tomcat服务器最大支持的连接数是有限的 如果一瞬间突然访问量暴增 那么毫无疑问 tomcat肯定挂掉 如果使用集群 将流量平均分开 一个挂掉另一个顶上 这样以来保证了服务器不挂掉 而且还加大了并发量

步骤1、

其实吧这里有点小问题 集群以后是有session共享问题的 好

尽请期待小编的下一篇文章

:使用redies+nginx+tomcat进行集群并解决session共享

有些同学可能会怕配置文件配置不对 这里给出我的整体配置 附加详细注释

#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志及PID文件
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#工作模式及连接数上限
events {
    #epoll是多路复用IO(I/O Multiplexing)中的一种方式,
    #仅用于linux2.6以上内核,可以大大提高nginx的性能
    #use   epoll; 
    #单个后台worker process进程的最大并发链接数    
    worker_connections  1024;
    # 并发总数是 worker_processes 和 worker_connections 的乘积
    # 即 max_clients = worker_processes * worker_connections
    # 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么
    # 为什么上面反向代理要除以4,应该说是一个经验值
    # 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
    # worker_connections 值的设置跟物理内存大小有关
    # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
    # 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
    # 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
    # $ cat /proc/sys/fs/file-max
    # 输出 34336
    # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
    # 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
    # 使得并发总数小于操作系统可以打开的最大文件数目
    # 其实质也就是根据主机的物理CPU和内存进行配置
    # 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
    # ulimit -SHn 65535
}
http {
    #设定mime类型,类型由mime.type文件定义
    include       mime.types;
    default_type  application/octet-stream;
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
    #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #连接超时时间
    keepalive_timeout  65;
    #开启gzip压缩
    gzip on;
    gzip_min_length 1k;  #最小1K
    gzip_buffers 16 64K;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
    gzip_vary on;
    #配置代理参数
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 10m;
    client_body_buffer_size 128k;   #设定请求缓冲
    proxy_connect_timeout 65;
    proxy_send_timeout 65;
    proxy_read_timeout 65;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    #tomcat服务器组
    upstream hs.com {
    server  localhost:8080      weight=1;
    }
    #设定虚拟主机配置
    server {
        #侦听80端口
        listen       80;
        #定义使用本地地址访问
        server_name  localhost;
        #设置字符编码
        charset UTF-8;
        #access_log  logs/host.access.log  main;
        #默认请求
        location / {
            root   html;
            index  index.html index.htm;
        }
        location ~\.(jsp|do)$ {
            #动态文件走tomcat服务器
            proxy_pass  http://hs.com;
        }
        location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
            #静态文件走nginx动态服务器
            #这里需要指定一个静态文件的地址 
            #在部署项目的时候需要将项目放到此文件夹内
            root /web_project;      
             expires 30d; #缓存30天 
        }
        location ~ .*\.(js|css)?$ {
            #静态文件走nginx动态服务器
            #这里需要指定一个静态文件的地址 
            #在部署项目的时候需要将项目放到此文件夹内
               root /web_project; 
            expires 30d; #缓存30天
        }
        # 定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

没学会?写的太罗嗦? 没关系 小编这有一套nginx学习视频

链接:https://pan.baidu.com/s/1pM4PDdL 密码:emz2

原文发布于微信公众号 - 互扯程序(chat_routine)

原文发表时间:2018-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏沈唁志

百度站长链接提交的js代码推送进化版

56260
来自专栏前端开发

[记] 初次体验小程序绑定合法域名的坑

4.1K70
来自专栏前端儿

前端自动化工具 -- Gulp 使用简介

而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用。

9220
来自专栏PHP在线

从运行原理及使用场景看Apache和Nginx

用正确的工具,做正确的事情。 本文只作为了解Apache和Nginx知识的一个梳理,想详细了解的请阅读文末参考链接中的博文。 Web服务器 Web服务器也称为W...

61670
来自专栏FreeBuf

忘记密码咋办?本地密码检索工具 – LaZagne Project

简介 LaZagne project 是一款用于检索大量存储在本地计算机上密码的开源应用程序。每款软件他们保存密码的方法或许不尽相同(明文,API,算法,数据...

22870
来自专栏我和PYTHON有个约会

爬虫 0030~ requests利刃出鞘

requests第三方封装的模块,通过简化请求和响应数据的处理,简化繁琐的开发步骤和处理逻辑、统一不同请求的编码风格以及高效的数据处理特性等而风靡于爬虫市场。

10210
来自专栏别先生

使用shell脚本定时采集日志数据到hdfs分布式文件系统

76270
来自专栏帘卷西风的专栏

linux的一些运维指令和技巧

转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

9500
来自专栏赵俊的Java专栏

Hexo 优化 --- 支持邮件通知的评论 Valine 增强版

1.1K20
来自专栏散尽浮华

nginx应用总结(1)--基础认识和应用配置

在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结。 一、nginx服务简介 Ng...

51560

扫码关注云+社区

领取腾讯云代金券