ljlao ljlao
首页
ljlao总结
  • Java8
  • Java IO
  • Java基础
  • java基础01
  • java基础02
  • java基础03
  • Java虚拟机
  • Java集合
  • Servlet
  • Java高并发
  • 多线程
  • 并发编程面试专栏
  • 数据结构与算法
  • 操作系统
  • 编译原理
  • 计算机网络
  • Shiro
  • MyBatis
  • Spring
  • Spring Boot
  • Spring Cloud
  • RabbitMQ
  • RocketMQ
  • Kafka
  • Elasticsearch
  • Netty
  • Dubbo
  • ZooKeeper
  • 消息队列
  • 分布式
  • 微服务
  • 数据库
  • MySQL
  • Mycat
  • Redis
  • MongoDB
  • Cassandra
  • Hbase
首页
ljlao总结
  • Java8
  • Java IO
  • Java基础
  • java基础01
  • java基础02
  • java基础03
  • Java虚拟机
  • Java集合
  • Servlet
  • Java高并发
  • 多线程
  • 并发编程面试专栏
  • 数据结构与算法
  • 操作系统
  • 编译原理
  • 计算机网络
  • Shiro
  • MyBatis
  • Spring
  • Spring Boot
  • Spring Cloud
  • RabbitMQ
  • RocketMQ
  • Kafka
  • Elasticsearch
  • Netty
  • Dubbo
  • ZooKeeper
  • 消息队列
  • 分布式
  • 微服务
  • 数据库
  • MySQL
  • Mycat
  • Redis
  • MongoDB
  • Cassandra
  • Hbase
  • Java基础

    • java基础01
    • java基础02
    • java基础03
    • Java虚拟机
    • Java集合
    • Java高并发
    • Servlet
    • 多线程
    • 并发编程面试专栏
    • 操作系统
    • 数据结构与算法
    • 编译原理
    • 计算机网络
    • 设计模式
    • Java IO
    • Java8
    • Java基础
  • java高级

    • MyBatis
    • 消息队列
    • Kafka
    • RabbitMQ
    • Netty
    • Shiro
    • RocketMQ
    • ZooKeeper
    • Dubbo
    • Spring Boot
    • Elasticsearch
    • Spring Cloud
    • Spring
    • 分布式
    • 微服务
  • sql

    • Cassandra
    • MongoDB
    • Mycat
    • MySQL
    • Redis
    • Hbase
    • 数据库
  • 运维

    • Jenkins
    • Docker
    • Kubernetes
    • Linux
    • Maven
    • Nginx
      • 301.主从 Reactor 多线程模型-Java面试题
      • 请陈述stubstatus和subfilter指令的作用是什么?-Java面试题
      • Nginx 常用配置?-Java面试题
      • 如果未使用 fastcgi 功能的,可以无视
      • Nginx 常用命令?-Java面试题
      • fastcgi 与 cgi 的区别?-Java面试题
      • ngxhttpupstream_module的作用是什么?-Java面试题
      • 在Nginx中如何在URL中保留双斜线?-Java面试题
      • 在Nginx中,如何使用未定义的服务器名称来阻止处理请求?-Java面试题
      • 请解释Nginx如何处理HTTP请求。-Java面试题
      • 列举Nginx服务器的最佳用途。-Java面试题
      • 使用“反向代理服务器”的优点是什么?-Java面试题
      • Nginx应用场景?-Java面试题
      • Nginx的优缺点?-Java面试题
      • Nginx怎么处理请求的?-Java面试题
      • 为什么要用Nginx?-Java面试题
      • 请解释一下什么是 Nginx ?-Java面试题
    • Tomcat
    • 云计算
  • 面试题库
  • 运维
ljlao
2022-03-09
目录

Nginx

[TOC]

# Nginx

# 301.主从 Reactor 多线程模型-Java面试题


服务端用于接收客户端连接的不再是个 1 个单独的 NIO 线程,而是一个独立的 NIO 线程池。Acceptor 接收到客户端 TCP 连接请求处理完成后(可能包含接入认证等),将新创建的SocketChannel 注册到 IO 线程池(sub reactor 线程池)的某个 IO 线程上,由它负责SocketChannel 的读写和编解码工作。Acceptor 线程池仅仅只用于客户端的登陆、握手和安全认证,一旦链路建立成功,就将链路注册到后端 subReactor 线程池的 IO 线程上,由 IO 线程负责后续的 IO 操作


# 请陈述stub_status和sub_filter指令的作用是什么?-Java面试题


(1)Stub_status指令:该指令用于了解Nginx当前状态的当前状态,如当前的活动连接,接 受和处理当前读/写/等待连接的总数 ;

(2)Sub_filter指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据


# Nginx 常用配置?-Java面试题


worker_processes 8; # 工作进程个数 worker_connections 65535; # 每个工作进程能并发处理(发起)的最大连接数(包含所有 连接数) error_log /data/logs/nginx/error.log; # 错误日志打印地址 access_log /data/logs/nginx/access.log; # 进入日志打印地址 log_format main '$remote_addr"$request" ''$status $upstream_addr "$request_time"'; # 进入日志格式

# 如果未使用 fastcgi 功能的,可以无视

fastcgi_connect_timeout=300; # 连接到后端 fastcgi 超时时间 fastcgi_send_timeout=300; # 向 fastcgi 请求超时时间(这个指定值已经完成两次握手 后向fastcgi传送请求的超时时间) fastcgi_rend_timeout=300; # 接收 fastcgi 应答超时时间,同理也是2次握手后 fastcgi_buffer_size=64k; # 读取 fastcgi 应答第一部分需要多大缓冲区,该值表示使用 1个64kb的缓冲区读取应答第一部分(应答头),可以设置为fastcgi_buffers选项缓冲区大小 fastcgi_buffers 4 64k; # 指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求,假 设一个php或java脚本所产生页面大小为256kb,那么会为其分配4个64kb的缓冲来缓存 fastcgi_cache TEST; # 开启fastcgi缓存并为其指定为TEST名称,降低cpu负载,防止502 错误发生

listen 80; # 监听端口 server_name rrc.test.jiedaibao.com; # 允许域名 root /data/release/rrc/web; # 项目根目录 index index.php index.html index.htm; # 访问根文件


# Nginx 常用命令?-Java面试题


启动 nginx 。

停止 nginx -s stop 或 nginx -s quit 。

重载配置 ./sbin/nginx -s reload(平滑重启) 或 service nginx reload 。

重载指定配置文件 .nginx -c /usr/local/nginx/conf/nginx.conf 。

查看 nginx 版本 nginx -v 。

检查配置文件是否正确 nginx -t 。

显示帮助信息 nginx -h 。


# fastcgi 与 cgi 的区别?-Java面试题


1)cgi

web 服务器会根据请求的内容,然后会 fork 一个新进程来运行外部 c 程序(或 perl 脚 本…), 这个进程会把处理完的数据返回给 web 服务器,最后 web 服务器把内容发送给用 户,刚才 fork 的进程也随之退出。

如果下次用户还请求改动态脚本,那么 web 服务器又再次 fork 一个新进程,周而复始的进行。

2)fastcgi

web 服务器收到一个请求时,他不会重新 fork 一个进程(因为这个进程在 web 服务器启动时 就开启了,而且不会退出),web 服务器直接把内容传递给这个进程(进程间通信,但 fastcgi 使用了别的方式,tcp 方式通信),这个进程收到请求后进行处理,把结果返回给 web 服务器,最后自己接着等待下一个请求的到来,而不是退出。

综上,差别在于是否重复 fork 进程,处理请求。


# ngx_http_upstream_module的作用是什么?-Java面试题


ngx_http_upstream_module用于定义可通过fastcgi传递、proxy传递、uwsgi传递、 memcached传递和scgi传递指令来引用的服务器组。


# 在Nginx中如何在URL中保留双斜线?-Java面试题


要在URL中保留双斜线,就必须使用merge_slashes_off;语法:merge_slashes [on/off] ; 默认值: merge_slashes on ;环境: http,server


# 在Nginx中,如何使用未定义的服务器名称来阻止处理请求?-Java面试题


只需将请求删除的服务器就可以定义为:

Server { listen 80; server_name “ “ ; return 444; }

这里,服务器名被保留为一个空字符串,它将在没有“主机”头字段的情况下匹配请求,而一个 特殊的Nginx的非标准代码444被返回,从而终止连接。


# 请解释Nginx如何处理HTTP请求。-Java面试题


Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套 接字读取,在该实例中读取到缓冲区并进行处理。单个线程可以提供数万个并发连接。


# 列举Nginx服务器的最佳用途。-Java面试题


Nginx服务器的最佳用法是在网络上部署动态HTTP内容,使用SCGI、WSGI应用程序服务 器、用于脚本的FastCGI处理程序。它还可以作为负载均衡器。


# 使用“反向代理服务器”的优点是什么?-Java面试题


反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用web托管服务时。


# Nginx应用场景?-Java面试题


http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时, 需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会 应为某台服务器负载高宕机而某台服务器闲置的情况。

nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。


# Nginx的优缺点?-Java面试题


优点:

占内存小,可实现高并发连接,处理响应快

可实现http服务器、虚拟主机、方向代理、负载均衡 Nginx配置简单

可以不暴露正式的服务器IP地址

缺点:

动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端 用nginx作为反向代理抗住压力,


# Nginx怎么处理请求的?-Java面试题


nginx接收一个请求后,首先由listen和server_name指令匹配server模块,再匹配 server模块里的location,location就是实际地址

server { # 第一个Server区块开始,表示一个独立的虚拟主机站点 listen 80; # 提供服务的端口,默认80
server_name localhost; # 提供服务的域名主机名

location / { # 第一个location区块开始 
    root html; # 站点的根目录,相当于Nginx的安装目录
    index index.html; # 默认的首页文件,多个用空格分开
}

}


# 为什么要用Nginx?-Java面试题


跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并 发,内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少,

而且Nginx内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求 就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。

使用Nginx的话还能:

节省宽带:支持GZIP压缩,可以添加浏览器本地缓存

稳定性高:宕机的概率非常小

接收用户请求是异步的


# 请解释一下什么是 Nginx ?-Java面试题


Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。

目前使用的最多的 Web 服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用。

Nginx 的主要功能如下:

作为 http server (代替 Apache ,对 PHP 需要 FastCGI 处理器支持)

FastCGI:Nginx 本身不支持 PHP 等语言,但是它可以通过 FastCGI 来将请求扔给某些语言 或框架处理。

反向代理服务器

实现负载均衡

虚拟主机


上次更新: 2022/03/09, 23:07:05
Maven
Tomcat

← Maven Tomcat→

Theme by Vdoing | Copyright © 2019-2025 鄂公网安备42028102000288 鄂ICP备19019767号-2鄂ICP备19019767号-4
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式