目录

Nginx

Nginx介绍

Nginx官网

nginx基本架构

nginx功能特性

基本功能

隐藏nginx服务器版本号

上传nginx软件包并解压

安装nginx依赖包

预编译

编译安装

启动nginx

测试

配置文件nginx.conf

修改nginx运行账号

查看nginx当前运行账号

修改nginx运行账号

添加path变量

重载nginx

生成服务启动脚本

配置服务开机自启


Nginx

Nginx介绍

Nginx ("engine x") 是一个轻量级、高性能的WEB服务器软件和反向代理服务器。

Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

1、WEB服务器:这是应用比较多的场景,配置虚拟主机提供HTTP WEB服务。可以先通过动态/静态内容分离,而后为静态内容(html/css/js/图片等)提供HTTP访问功能;而动态内容可以整合代理模块,代理给上游服务器,来支持对外部程序的直接调用或者解析,如FastCGI支持PHP。

2、反向代理服务器:这是应用非常多的场景,为后端服务器代理。接收客户端请求,根据负载均衡策略转发给后端多个上游服务器处理;然后再等待后端服务器返回请求响应,接收到后再返回给请求的客户端。

Nginx官网

Nginx官网:http://nginx.org

Nginx官方文档:http://nginx.org/en/docs/

选择自己需要的版本

nginx基本架构

1、一个master进程生成多个worker子进程(每个进程只有一个线程),一个worker响应多个用户请求;

2、非阻塞、IO复用、事件驱动:select,poll, epoll, kqueue,/dev/poll;

3、支持sendfile,sendfile64;

4、支持文件AIO(异步I/O);

5、支持mmap;

6、灵活的文件配置;

7、占用内存小:10,000个非活动HTTP保持连接占用大约2.5M内存。

nginx功能特性

基本功能

实现与服务静态文件(静态资源的web服务器),能缓存打开的文件描述符;

反向代理服务器,缓存、负载均衡、健康状态检测;

支持FastCGI;

模块化机制,非DSO机制,支持多种过滤器gzip,SSI和图像的模块完成图形大小调整等;

支持SSL;

扩展功能

基于名称和IP做虚拟主机;

支持keeplive;

支持平滑配置更新或程序版本升级;

定制访问日志,支持使用日志缓存以提高性能;

支持URL rewrite;

支持路径别名;

支持基于IP及用户的认证;

支持速率限制,并发数限制等;

隐藏nginx服务器版本号

上传nginx软件包并解压

tar -zxvf nginx-1.10.3.tar.gz -C /usr/local/src/

Vi /usr/local/src/nginx-1.10.3/src/core/nginx.h

修改版本号为9.9.9 修改服务器名称

vi src/http/ngx_http_header_filter_module.c

修改HTTP头信息中的server字段,防止回显具体版本号

vi src/http/ngx_http_special_response.c

这个文件定义了http错误码的返回,有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把它隐藏起来。

安装nginx依赖包

[root@wzy]# yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel  pcre pcre-devel

预编译

创建nginx运行账户www并加入到www组,不允许www用户直接登录系统。

[root@wzy]# groupadd www  #添加用户组

[root@wzy]# useradd -g www www -s /sbin/nologin  #添加用户到用户组,不登录系统

[root@wzy nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www

相关选项说明

with-http_dav_module   # nginx 编译时通过加入“--with-http_dav_module”可以启用对WebDav协议的支持。该模块处理 HTTP 和 WebDAV 的 PUT、DELETE、MKCOL、COPY 和 MOVE 方法。

--with-http_stub_status_module  #获取Nginx的状态统计信息

--with-http_addition_module    #向响应内容中追加内容,比如想在站点底部追加一个js或者css,可以使用这个模块来实现,即模块ngx_http_addition_module在响应之前或者之后追加文本内容。

--with-http_sub_module   # ngx_http_sub_module模块是一个过滤器,它修改网站响应内容中的字符串,比如你想把响应内容中的‘iuwai’全部替换成‘aaaaa‘,这个模块已经内置在nginx中,但是默认未安装,需要安装需要加上配置参数:--with-http_sub_module

--with-http_flv_module      #该ngx_http_flv_module模块为Flash视频(FLV)文件提供伪流服务器端支持。它会根据指定的 start 参数来指定跳过多少字节,并在返回数据前面附上 FLV 头。

--with-http_mp4_module     #模块提供了对 MP4 视频的播放支持,相关的扩展名 .mp4 .m4v .m4a。

--with-http_ssl_module         #启用ngx_http_ssl_module

--with-pcre   # 支持正则表达式

编译安装

[root@wzy nginx-1.10.3]# make && make install

启动nginx

[root@wzy nginx-1.10.3]# /usr/local/nginx/sbin/nginx

查看端口号

测试

[root@wzy nginx-1.10.3]# curl -I 192.168.10.4

网站测试

http://192.168.10.4/

配置文件nginx.conf

在Nginx服务器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置这三大块内容,配置语句的格式为”关键字  值;”(末尾以分号表示结束),以”#”开始的部分表示注释。

1)全局配置

由各种配置语句组成,不使用特定的界定标记。全局配置部分包括运行用户、工作进程数、错误日志、PID存放位置等基本设置。

常用配置项:

user  nobody;

//运行用户,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody

worker_processes 2;

//指定nginx启动的工作进程数量,建议按照cpu数目来指定,一般为它的倍数

worker_rlimit_nofile 102400;

//这个指令是指当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。(通过”ulimit –n 数值”可以修改打开的最多文件数目)

error_log  logs/error.log; //全局错误日志文件的位置

pid  logs/nginx.pid;  //PID文件的位置

2)I/O事件配置:

使用”events {}”界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置

events {

use epoll;   //使用epoll模型,对于2.6以上的内核,建议使用epoll模型以提高性能

worker_connections 4096;  //每个进程允许的最多连接数(默认为1024),每个进程的连接数应根据实际需要来定,一般在10000以下,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections,具体还要看服务器的硬件、带宽等。

}

3)HTTP配置

使用”http{}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以及虚拟主机、PHP解析等一系列设置。其中大部分配置语句包含在子界定标记”server {}”内。

http {

#设定媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令。

include      mime.types;

default_type application/octet-stream;   //默认媒体类型足够。

#设定日志格式

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

#设定access log

access_log logs/access.log main;

keepalive_timeout 65;  //连接保持超时

#设定虚拟主机

server {                //用来配置虚拟主机

listen  80; //WEB服务的监听设置,可以采用”IP地址:端口”形式

server_name www.lnmp.com;//网站名,称可以写多个名称,用空格分隔

location / {    //表示如何匹配后面的路径的

index index.html; //默认首页

root html; //网页根目录位置,默认为Nginx安装目录下的html/子目录,root语句用来设置特定访问位置的网页文档路径,根据需要可改为/var/www/html等其他路径。

}

charset gb2312;  //网页的默认字符集

#设定本虚拟主机的访问日志

access_log logs/www.lnmp.com.access.log main;

error_page 500 502 503 504  /50x.html; //内部错误的反馈页面

location = /50x.html {

root html;

}

}

}

修改nginx运行账号

查看nginx当前运行账号

[root@wzy ~]# ps -aux | grep nginx   #默认是nobody用户

修改nginx运行账号

[root@wzy ~]# vim /usr/local/nginx/conf/nginx.conf

 查看运行账号

[root@wzy ~]# ps -aux | grep nginx

在这里我们还可以看到在查看的时候,worker进程是www用户了,但是master进程还是root

其中,master是监控进程,也叫主进程,worker是工作进程.

master监控进程使用root,也可以是降级使用普通用户,如果都是用普用户,那么编译安装的时候,是用普通用户执行,sudo方式操作,可以直接理解为master是管理员,worker进程才是为用户提供服务的!

添加path变量

[root@wzy11 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/bin/

重载nginx

使用nginx -h 查看nginx选项信息

[root@wzy ~]# nginx -t     #语法检测

[root@wzy ~]# nginx -s reload       # 重载nginx

重载nginx其他选项

[root@wzy ~]# nginx -v   显示版本号和服务器名称,隐藏则显示隐藏名称

[root@wzy ~]# nginx -V(大写)  显示版本号、服务器名称、编译时使用的模块信息

生成服务启动脚本

[root@wzy ~]# vi /etc/init.d/nginx

#!/bin/bash# chkconfig: 2345 99 20# description: Nginx Service Control ScriptPROG="/usr/local/nginx/sbin/nginx"PIDF="/usr/local/nginx/logs/nginx.pid"case "$1" instart)netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/nullif [ $? -eq 0 ]thenecho "Nginx service already running."else$PROG -t &> /dev/nullif [ $? -eq 0 ] ; then$PROGecho "Nginx service start success."else$PROG -tfifi;;stop)netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/nullif [ $? -eq 0 ]thenkill -s QUIT $(cat $PIDF)echo "Nginx service stop success."elseecho "Nginx service already stop"fi;;restart)$0 stop$0 start;;status)netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/nullif [ $? -eq 0 ]thenecho "Nginx service is running."elseecho "Nginx is stop."fi;;reload)netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/nullif [ $? -eq 0 ]then$PROG -t &> /dev/nullif [ $? -eq 0 ] ; thenkill -s HUP $(cat $PIDF)echo "reload Nginx config success."else$PROG -tfielseecho "Nginx service is not run."fi;;*)echo "Usage: $0 {start|stop|restart|reload}"exit 1esac

配置服务开机自启

[root@wzy ~]# chmod +x /etc/init.d/nginx  #给脚本添加可执行权限

[root@ wzy ~]# chkconfig --add nginx    #把nginx添加为系统服务

[root@wzy ~]# chkconfig nginx on      #把nginx添加开机自启动

[root@wzy ~]# chkconfig --list nginx    #查看nginx开机启动项

Nginx详解和安装相关推荐

  1. Nginx详解一(理论)

    一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web服务请求过程 五.Linux I/O模型 六.Linux I/O模型具体说明 七.Linux I/O模型的具体实 ...

  2. Git客户端图文详解如何安装配置GitHub操作流程攻略

    Git客户端图文详解如何安装配置GitHub操作流程攻略 软件应用 爱分享  3个月前 (08-15)  8896浏览  0评论 Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来 ...

  3. python如何安装matplotlib_详解python安装matplotlib库三种失败情况

    (可能只有最后一句命令有用,可能全篇都没用) (小白方法,可能只适用于本人情况) 安装matplotlib时,出现的三种失败情况 1.read timed out 一开始我在pycharm终端使用pi ...

  4. 第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

    第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍 安装 解压 安装依赖 修改配置 注册为系统服务 启动 登录一下,发现报错了 解决方法 介 ...

  5. 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor

    第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...

  6. 详解VMware12安装Mac OS X 10.11

    有不懂的地方可以留言,知道哪里错的必会回答 文章来源:https://www.jb51.net/article/105034.htm 系统文件来源:https://zhidao.baidu.com/q ...

  7. 即兴操作:详解Linux安装GCC方法-------------------------这操作很简单搞一波试试看

    详解Linux安装GCC方法 起锅烧油先准备七个包配置文件以便于查看 上传http-2.4.25.tar.gz软件包到/opt目录下 解压压缩包 修改配置文件 修改配置文件并启动服务 inux中访问h ...

  8. Android Studio 安装详解及安装过程中出现的问题解决方案

    Android Studio 安装详解及安装过程中出现的问题解决方案 一,Android Studio安装包下载, 首先到官网下载,就是去Android Studio中文社区官网下载你的平台需要的安装 ...

  9. IDEA安装阿里巴巴编码规范插件的两种方式详解(在线安装和离线安装)

    这篇文章主要介绍了IDEA安装阿里巴巴编码规范插件的两种方式详解(在线安装和离线安装),本文通过截图给大家展示的非常详细,需要的朋友可以参考下 目录 1.在线安装: 2.离线安装: IDEA安装阿里巴 ...

最新文章

  1. 依赖注入框架Autofac学习笔记
  2. Android一个完整的项目转成SDK提供给第三方嵌入
  3. 摘抄《天龙八部》诗词回目
  4. Solr建立索引时,过滤HTML标签
  5. JavaFX仿windows文件管理器目录树
  6. shell技巧(sed 断句、读取指定行) 【ZT】
  7. matlab非线性系统频域标识,基于MATLAB的最小二乘法系统辨识与仿真
  8. Style主题Theme风格Android
  9. 万兆交换机用什么网线_超五类线到底是百兆线还是千兆线?家庭环境中我们要选择几类网线?...
  10. EXT.NET高效开发(二)——封装函数
  11. sql server代理无法启动_DungProxy代理资源服务系统,
  12. iOS 使用脚本自动化复制target
  13. 第一篇:手把手教你移植任天堂,没有声音、无需外置SD卡、可使用独立按键也可使用外置手柄,本人使用的芯片为ESP32,移植到STM32均可使用。(本篇主要介绍nes_main.h这个文件)
  14. unity导入Standard Assets出现错误
  15. 智遥工作流中调用SAP基础数据
  16. Linux环境下配置虚拟ip,方法2:单网卡绑定多IP
  17. linux 将新密码邮件发送,linux脚本实现自动发送和收取邮件的设置方法
  18. 性能优化之cpu的 us和sy
  19. 工业工程运用计算机,工业工程如何面对挑战-精选.doc
  20. 恢复时间目标(RTO)和恢复点目标(RPO)的差异

热门文章

  1. 多多客api_多多客小程序如何配置微信开放平台?
  2. 2014安康电大会计本科网考计算机应用基础试题答案,2014年电大网考计算机应用基础统考试题二及答案小抄[精品].doc...
  3. 高考将至,听听那些关于高考的经典段子吧
  4. 第一次使用Xshell在服务器上跑程序
  5. CSVreader和POI操作用法比较,以及CSVReader的坑
  6. MATLAB | 一起来绘制有雪花飘落的圣诞树叭
  7. Yonsuite的云服务能力!
  8. perfmon android 7.1,PerfMon+性能监视器
  9. java 子类化_如何在Java中安全地进行子类型化
  10. [openjudge] Ride to Office