前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7下Nginx服务器安装与使用教程

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

作者头像
互扯程序
发布2018-03-26 16:49:44
2.3K0
发布2018-03-26 16:49:44
举报
文章被收录于专栏:互扯程序

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 环境,则需要安装:

代码语言:javascript
复制
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也需要此库。命令:

代码语言:javascript
复制
yum install -y pcre pcre-devel

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

代码语言:javascript
复制
yum install -y zlib zlib-devel

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

代码语言:javascript
复制
yum install -y openssl openssl-devel

二、下载并安装Nginx

1、下载nginx(不推荐)

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

2、使用命令下载

代码语言:javascript
复制
wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

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

3、解压nginx安装包

代码语言:javascript
复制
tar -zxvf nginx-1.12.2.tar.gz

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

代码语言:javascript
复制
cd nginx-1.12.2
./configure

5、编译安装

代码语言:javascript
复制
make
make install

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

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

6、Nginx一些命令

首先进入nginx的sbin目录下

代码语言:javascript
复制
cd /usr/local/nginx/sbin/

启动命令:./nginx

关闭命令:

代码语言:javascript
复制
./nginx -s stop

或./nginx -s quit

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

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

代码语言:javascript
复制
./nginx -s reload

7、启动nginx

代码语言:javascript
复制
./nginx

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

Nginx常用功能

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

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

什么是反向代理

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

什么是动静分离

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

步骤:

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

代码语言:javascript
复制
cd /usr/local/nginx/conf/

2、编辑nginx.conf文件

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

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

代码语言:javascript
复制
vi nginx.conf

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

配置反向代理服务器

代码语言:javascript
复制
#tomcat反向代理服务器
upstream xx.com {
server    localhost:8080      weight=1;
}

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

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

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

大概位置如图所示:

3、配置代理参数

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

代码语言:javascript
复制
#配置代理参数
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{}标签内

代码语言:javascript
复制
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{}标签的里面添加如下代码

代码语言:javascript
复制
#开启压缩传输;
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共享

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

代码语言:javascript
复制
#启动进程,通常设置成和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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 互扯程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档