Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
为了更好地适应国内环境,各厂商在nginx在原有的基础上进一步开发,Tengine就是其中典型案例。
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
nginx 的配置文件
nigix主要文件路径为:
/etc/nginx/ #nginx的配置目录 /etc/nginx/nginx.conf/ #nginx的主配置文件 /usr/share/nginx/ #默认存放网页的目录
/etc/nigix/nginx.conf配置文件内容由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location。
main(全局设置) # main块设置的指令将影响其他所有设置;
server(主机设置) # server块的指令主要用于指定主机和端口;
upstream(负载均衡服务器设置) # upstream指令主要用于负载均衡,设置一系列的后端服务器;
location(URL匹配特定位置的设置)# location块用于匹配网页位置
在这四个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令,同时每个部分还可以使用其他HTTP模块指令,例如Http SSL模块、HttpGzip Static模块和Http Addition模块等。
main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。
他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。
在本次实验中,配置文件不必修改,保持原样即可。
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { 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 /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } # Settings for a TLS enabled server. # # server { # listen 443 ssl http2; # listen [::]:443 ssl http2; # server_name _; # root /usr/share/nginx/html; # # ssl_certificate "/etc/pki/nginx/server.crt"; # ssl_certificate_key "/etc/pki/nginx/private/server.key"; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 10m; # ssl_ciphers PROFILE=SYSTEM; # ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # # error_page 404 /404.html; # location = /40x.html { # } # # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } # } }
php配置
修改php-fpm的用户名和组。
vi /etc/php-fpm.d/www.conf
apache和nginx的区别
Web 服务器是存储、处理和交付网页给用户的计算机。Apache 服务器和 NGINX 是当今为 Internet 提供支持的两个最著名的 Web 服务器。世界上超过 50% 的网站都运行在这两个 Web 服务器上。它们都旨在处理不同的工作负载并补充各种类型的软件,从而创建广泛的 Web 应用程序堆栈。
NGINX 的好处
NGINX 服务器有很多优点。其中一些如下:
- NGINX 是开源的,可以免费使用。
- NGINX 有一个简单的配置系统,不像 Apache。用户必须编辑不超过两个文件。
- NGINX 在处理 pdf、zip、HTML、mp4、MPEG、Avi-、jpg、gif、png 等静态文件时的性能非常好。
- NGINX 可以毫无困难地处理来自任何 Web 应用程序的流量,并为大多数应用程序提供配置指南。NGINX 提供各种应用程序,例如 WordPress、python、ruby、Drupal、VBulletin、PhpBB 和许多其他流行的应用程序。
- 与 Apache 或 Lighttpd 等其他 Web 服务器相比,NGINX 在处理并发连接、响应时间和资源使用方面更胜一筹。
- NGINX 使网站更快,从而使他们能够获得更高的 Google 排名,因为他们已经对搜索排名算法进行了各种更改,并且最近他们使网站的速度也成为算法的一部分。速度更快的网站会得到 Google 的最大支持。NGINX 可以在流量大的情况下同时有效地处理多个客户端请求。这使网站更加优化和更快。
APACHE的好处
- Apache 是开源的,它可以免费使用,并允许社区开发人员轻松扩展和修改它。
- Apache 是灵活的,因为它存在动态模块。
- Apache 兼容类 Unix 操作系统,如 Linux、BSD 等,以及 MS Windows。
- Apache 拥有庞大的社区,并且在出现任何问题时都可以轻松获得支持。
- Apache 对静态文件具有最佳的交付能力,并且与任何编程语言兼容。
NGINX 和 Apache 之间的关键区别:
- NGINX 是一个开源的高性能 Web 服务器和反向代理服务器,而 Apache 是一个开源的 HTTP 服务器。NGINX 作为反向代理服务器位于专用网络中的防火墙后面,并将客户端请求引导到适当的后端服务器,确保客户端和服务器之间的网络流量顺畅流动。
- 两者之间的根本区别在于它们的架构。NGINX 具有单线程架构,其中多个客户端请求在单个线程中处理。另一方面,Apache 具有多线程架构,其中为请求创建一个进程。NGINX 的事件驱动架构即使在大流量下也能确保更好的性能。
- NGINX 能够很好地处理静态内容。它比 Apache 快 2.5 倍。对于动态内容,Apache 本身在 Web 服务器本身内处理动态内容,而 NGINX 不能在内部处理动态内容,并且依赖于外部进程来执行。
- NGINX 和 Apache 服务器都非常擅长处理安全性,但 NGINX 代码库要小得多,所以从安全角度来看这是一个很大的优势。
- NGINX 完全支持几乎所有的 Unix 操作系统,但对 Windows 的支持是部分的。另一方面,Apache 完全支持类 Unix 操作系统和 MS Windows。
特征 | NGINX | APACHE |
---|---|---|
简单 | NGINX 的开发和创新很复杂,因为它具有复杂的架构来同时处理多个连接。 | Apache 很容易开发,因为它的每个进程一个连接的模型。 |
操作系统支持 | NGINX 在类 Unix 系统上运行,但对 Windows 的支持有限。 | Apache 兼容所有类 Unix 系统,如 Linux、BSD 等,并且完全支持 Windows。 |
基本架构 | Nginx 遵循事件驱动/单线程方法来处理客户端请求 Nginx 在一个线程中处理多个请求 | Apache 遵循进程驱动/多线程方法来处理客户端请求。 |
静态内容 | NGINX 可以同时运行数千个静态内容连接,速度比 Apache 快 2.5 倍。 | 在 Apache 中,为每个请求创建一个新线程 Apache 显示静态内容的速度较慢。 |
动态内容 | NGINX 不处理动态内容。 | Apache 在 Web 服务器本身内处理动态内容。 |
交通处理 | NGINX 可以在流量大的情况下同时有效地处理多个客户端请求。 | Apache 无法同时处理多个客户端请求以及繁重的 Web 流量。 |
内存消耗 | Nginx 使用有限的硬件资源来处理客户端请求并且消耗更少的内存 | Apache的内存消耗更多。 |
用法 | NGINX 被开发为既是 Web 服务器又是反向代理服务器。 | Apache 被开发为 Web 服务器。 |
集中配置 | NGINX 有一个相对简单的配置系统。 Nginx 不允许额外的配置。 | Apache 中的配置系统并不是那么简单。 Apache 允许通过 .htaccess 文件在每个目录的基础上进行额外配置。 |
请求口译 | Nginx 通过 URI(统一资源标识符)来解释客户端请求。 | Apache 传递文件系统位置来解释客户端请求。 |
安全 | Nginx 以更小的代码库提供更好的安全性。 | Apache 还提供了良好的安全性,但与 Nginx 相比,它的安全性较低。此外,Apache 的代码库非常高。 |
功能模块 | NGINX 的核心版本不支持动态模块,但 NGINX plus 是 NGINX 的付费版本,支持动态模块。 模块的加载和卸载很复杂。 | Apache 由可以关闭/打开的动态加载模块组成。 apache中模块的加载和卸载更简单 |
支持 | NGINX 由成立于 2011 年的 NGINX, Inc 公司处理。社区支持通过 IRC(Internet 中继聊天)、邮件列表和堆栈溢出来完成。 | Apache 服务器由来自世界各地的用户社区处理,并由 Apache 软件基金会协调。社区支持通过 IRC、邮件列表、堆栈溢出和论坛完成。 |
学习内容均参考:http://book.fsec.io/101-%E5%9F%BA%E7%A1%80%E7%AF%87/101-B-linux%E6%9C%8D%E5%8A%A1/101-B5-nginx%E6%9C%8D%E5%8A%A1%E4%B8%8Elnmp%E6%9E%B6%E6%9E%84.html