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 配置复杂 ,重启的时候发现配置出错了,会很崩溃

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

一、安装所需要的环境

1、gcc 安装

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

yum install gcc-c++

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 下载后如图(会下载到当前目录下)

centos7 chatgpt4 搭建 搭建centos7服务器_服务器

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安装成功

centos7 chatgpt4 搭建 搭建centos7服务器_静态文件_02

                                            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服务器在你此服务器的地址 

大概位置如图所示

centos7 chatgpt4 搭建 搭建centos7服务器_服务器_03

3、配置代理参数

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

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;
        }
    }
}