Nginx安装

一、Nginx概述

  1、代理服务器

  对于代理服务器,可以分为正向代理服务器和反向代理服务器两种。

  正向代理服务器就是客户端的代理服务器,主要作用:隐藏(可以隐藏掉实际的客户端地址)、FQ(客户端无法或无权限访问服务器时,可以使用代理服务器访问)、提速(客户端访问服务器比较慢,但是代理客户端与服务器交互比较快,就可以使用代理服务器的链路)、缓存(代理服务器缓存请求)、授权(代理锁权限管理)

  反向代理服务器就是服务器端的代理服务器,主要作用:隐藏(可以隐藏实际的服务器地址)、分布式路由(可以根据不同的路由策略,路由到不同的系统)、负载均衡、动静分离、数据缓存

  正向代理和反向代理的区别主要是:客户端是否清楚自己要访问的服务器是谁、代理的位置

  2、Nginx反向代理服务器

  Nginx是一个轻量级、高性能、基于http的反向代理服务器,静态web服务器,其特点如下:

  (1)高并发

    一个Nginx服务器不做任何配置的情况下,并发量可达1000左右,在硬件条件允许的情况下,Nginx可以支持高达5~10万的并发量(除了Nginx的配置外,Linux主机也需要做大量的设置来配合Nginx)。

    对比一下Tomcat,Tomcat的默认并发量为150(不做任何配置),即当有超过150个用户同时访问某个Servlet时,Tomcat的响应就会变得非常慢。

  (2)低消耗

    官方给出的测试结果,10000个非活跃连接,在Nginx中仅消耗2.5M内存,对于一般的DoS攻击来说都不是事,但是对于DDos也会有问题。

  (3)热部署

    可以在7*24小时不间断服务的前提下,进行Nginx版本的平滑升级,Nginx配置文件的平滑修改,即在不停机的情况下升级Nginx,修改、替换配置文件。

  (4)高可用

    Nginx由于有很多工作线程worker,因此可以实现高并发。当这些工作进程中某些进程出现问题而停止工作,并不会影响整个系统的整体运行,因为其他worker会接替那些出现问题的线程。

  (5)高扩展

    Nginx的很多功能都是已经开发好的功能模块,若需要哪些功能,只需要安装响应功能的扩展模块即可。根据编写模块所使用的语言不通,可以分为C语言扩展模块和LUA脚本扩展模块两类。

二、Nginx安装

  1、环境准备

  下载nginx并解压,nginx官网:http://nginx.org/  ,同时由于Nginx是C语言编写的,所以对其进行编译就需要使用相关编译器,对于C/C++编译器,使用最多的是gcc和gcc-c++,这两个一般在centerOS中是没有安装的,还有,基本的Nginx功能依赖于一些基本的库,在安装Nginx之前需要提前安装这些库。

#下载解压nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
#安装gcc
yum -y install gcc-c++
#安装依赖库
yum -y install pcre-devel openssl-devel

  2、安装nginx

  在安装前,需要先生成makefile,如果没有makefile,编译会报错。

#生成makefile
./configure  --prefix=/usr/local/nginx  --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log  --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock  --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
#编译安装
make && make install

  3、配置全局命令

  上一步中已经将nginx安装到了/usr/local/nginx目录下(--prefix配置参数),可以到该目录的sbin目录下查看nginx提供的命令(其实目前只提供了一个nginx的命令),然后将该命令连接到全局的sbin目录下

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

三、Nginx命令

  1、基础命令

命令描述 命令 样例 备注
查看命令选项 nginx -h ./nginx -h  
查看nginx版本 nginx -v/-V ./nginx -v -v只显示版本信息,-V会显示更多的版本信息,例如gcc版本,OpenSSL的版本等
测试配置文件 nginx -t/-T/-tq ./nginx -t

-t显示测试配置文件是否正确,默认只测试默认的配置文件,conf/nginx.conf,-T测试配置文件是否正确,并显示配置文件内容,-

tq在测试配置文件过程中,禁止显示非错误信息,也就是只显示错误信息

启动nginx nginx (-c file) ./nginx -c /usr/local/nginx/conf/nginx.conf 可以直接使用./nginx进行启动,这样走的是默认的配置文件,也可以使用./nginx -c file 的形式来指定配置文件
停止nginx nginx -s stop/quit ./nginx -s stop stop是强制停止nginx,无论当前工作进程是否正在处理工作;quit是优雅停止nginx,使当前的工作进程完成当前工作后停止。
平滑重启命令 nginx -s reload ./nginx -s reload  在不重启nginx的前提下,重新加载nginx配置文件
重新打开日志文件 nginx -s reopen ./nginx -s reopen  
指定nginx配置文件存放的路径 nginx -p    
设置配置文件外的全局指令 nginx -g    

  2、页面测试

    关闭防火墙(单独的服务器需要,如果使用的是阿里云,只需要配置开放80端口的安全组即可)

service iptables stop

    访问nginx,由于nginx使用的是80端口,那么就可以直接使用ip访问即可。

四、部分异常解决方案

  在上述安装过程中,部分异常信息解决方案

出现错误的命令 错误现象 原因分析 解决方案
make && make install 提示没有makefile   需要先创建makefile,创建命令上面已存在
./nginx -t [emerg] getpwnam("nginx") failed 由于安装时使用的是root用户,其权限太大,因此在创建mkfile时使用了--user=nginx --group=nginx为nginx用户创建了权限,但是我们并没有安装nginx用户 添加用户:useradd -s /sbin/nologin -M nginx
------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~
原文地址:https://www.cnblogs.com/liconglong/p/14498963.html