文章目录
-
- 1、什么是 Nginx ?
- 2、为什么要用Nginx?
- 3、Nginx是如何实现高并发的?
- 4、Nginx是如何处理http请求的?
- 5、nginx和apache的区别
- 6、nginx用过哪些模块
- 7、Nginx调优方式:
- 8、 Nginx 常用命令?
- 9、nginx日志分析怎么做的
- 10、nginx如何设置防ddos攻击
- 11、Nginx 常用配置?
- 12、使用“反向代理服务器”的优点是什么?
- 13、请解释Nginx如何处理HTTP请求。
- 14、请解释Nginx服务器上的Master 和 Worker进程分别是什么?
- 15、nginx 有哪几种虚拟主机
- 16、请解释是否有可能将Nginx的错误替换为502错误、503?
- 17、502错误问题解决办法?
- 18、 nginx 500、304、499 是什么问题导致的
- 19、tomcat端口有哪些,都是什么用途
- 20、请解释ngx_http_upstream_module的作用是什么?
- 21、请解释什么是C10K问题?
- 22、解释如何在Nginx中获得当前的时间?
- 23、Nginx的负载均衡算法都有哪些
- 24、nginx 有什么使用场景
- 25、 使用反向代理服务器的好处是什么?
- 26、举例nginx服务器的最佳用途?
- 27、 如何设置在81端口上运行nginx?
- 28、反向代理配置
- 29、正向代理
- 30、反向代理
- 31、动态资源、静态资源分离
- 32、为什么要做动、静分离?
- 33、nginx配合php工作Fastcgi原理
- 34、负载均衡
- 35、LVS 与 Nginx 区别
- nginx 和 LVS 作对比的结果:
- 36、haproxy和nginx有什么区别?
1、什么是 Nginx ?
Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。
目前使用的最多的 Web 服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用。
Nginx 的主要功能如下:
作为 http server (代替 Apache ,对 PHP 需要 FastCGI 处理器支持)
FastCGI:Nginx 本身不支持 PHP 等语言,但是它可以通过 FastCGI 来将请求扔给某些语言或框架处理。
反向代理服务器
实现负载均衡
虚拟主机
nginx版本号:nginx version: nginx/1.12.2
2、为什么要用Nginx?
优点:
- 跨平台、配置简单
- 非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发
- 内存消耗小:开启10个nginx才占150M内存 成本低廉:开源
- 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。
- 节省宽带:支持GZIP压缩,可以添加浏览器本地缓存
- 稳定性高:宕机的概率非常小
- master/worker结构:一个master进程,生成一个或者多个worker进程
- 接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力
- 一边接收web服务器的返回数据,一边发送给浏览器客户端
- 网络依赖性比较低,只要ping通就可以负载均衡
- 可以有多台nginx服务器
- 事件驱动:通信机制采用epoll模型
3、Nginx是如何实现高并发的?
Nginx为一群服务器做代理,每次请求经过nginx转发给不同的服务器;具体的由负载均衡的策略决定
在配置文件中,配置upStream 指向多个服务器并指定负载均衡的策略
在server中配置proxy_pass指向upStream
4、Nginx是如何处理http请求的?
Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并进行处理。单个线程可以提供数万个并发连接。
5、nginx和apache的区别
Apache模块多,基本想到的都可以找到,更成熟,bug少,nginx的bug多。
nginx超稳定,是目前的主流,有丰富的特性,成熟的技术和开发社区。
6、nginx用过哪些模块
- ngx_http_gzip_module:压缩模块,对Nginx返回的数据压缩,属于性能优化模块
- ngx_http_fastcgi_module:FastCGI模块,和 动态应用相关的模块,例如PHP
- ngx_http_proxy_module:Proxy代理模块
- ngx_http_upstream_module:负载均衡模块,可以实现网站的负载均衡功能及节点的健康检查
- ngx_http_rewrite_module:URL地址重写模块
- ngx_http_limit_conn_module:限制用户并发连接数及请求数模块
- ngx_http_log_module:访问日志模块,以指定的格式记录Nginx客户访问日志等信息
- ngx_http_stub_status_module:记录Nginx基本访问状态信息等模块
- ngx_http_referer_module模块: 可以基于这个模块做防盗链。Referer 是 HTTP 请求header 的一部分,当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含 Referer 。比如我在www.google.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有: Referer=http://www.google.com
7、Nginx调优方式:
- 隐藏 Nginx 版本号
- 隐藏 Nginx 版本号和软件名
- 更改 Nginx 服务的默认用户
- 优化 Nginx worker 进程数
- 绑定 Nginx 进程到不同的 CPU 上
- 优化 Nginx 处理事件模型
- 优化 Nginx 单个进程允许的最大连接数
- 优化 Nginx worker 进程最大打开文件数
- 优化服务器域名的散列表大小
- 开启高效文件传输模式
- 优化 Nginx 连接超时时间
- 限制上传文件的大小
- FastCGI 相关参数调优
- 配置 Nginx gzip 压缩
- 配置 Nginx expires 缓存
- 优化 Nginx日志(日志切割)
- 优化 Nginx 站点目录
- 配置 Nginx 防盗链
- 配置 Nginx 错误页面优雅显示
- 优化 Nginx 文件权限
- Nginx 防爬虫优化
- 控制 Nginx 并发连接数
- 集群代理优化
8、 Nginx 常用命令?
启动 /usr/local/nginx/sbin/nginx 。
停止 nginx -s stop 或 nginx -s quit 。
重载配置 /usr/local/nginx/sbin/nginx -s reload(平滑重启) 或 service nginx reload 。
重载指定配置文件 .nginx -c /usr/local/nginx/conf/nginx.conf 。
查看 nginx 版本 /usr/local/nginx/sbin/nginx -V。
检查配置文件是否正确 nginx -t 。
显示帮助信息 nginx -h 。
9、nginx日志分析怎么做的
我们公司使用ELK做nginx的日志分析 主要分析nginx的access.log日志