Nginx面试题

一、正向代理

在这里插入图片描述

二、反向代理

在这里插入图片描述

三、Nginx的作用

1、反向代理

将服务器的地址信息对客户端屏蔽,客户端只需要访问代理服务器即可,代理服务器会将请求转发给底层的真正起作用的应用服务器。但在客户端眼里,服务器只有唯一的一台,就是代理服务器。

  • 关键命令:proxy_pass
  • 如将 localhost 的80端口 转到 localhost 8080端口
server { 
   listen 80; 
    server_name localhost; 

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host:$server_port;
  }
}
2、负载均衡

Nginx可以作为负载均衡器,将流量分发到多个后端服务器。权重会影响请求被分发到该服务器的概率,权重越大,被分发请求的概率越大。

	upstream myserver {
	    #请求的 90% 进入到8080服务器
	    server ip:8080 max_fails=3 fail_timeout=30s weight=9;
	    #请求的 10% 进入到8081服务器
	    server ip:8081 max_fails=3 fail_timeout=30s weight=1;
	}
	
	server {
	    listen 80;
	    server_name ip;
	    location / {
	        proxy_pass http://myserver;
	    }
	}
3、HTTP服务器(动静分离)

项目中的静态资源,不会因项目运行而发生变化,所以可以缓存在Nginx本地,加快访问速度。
使用Nginx处理静态页面,Tomcat 处理动态页面

upstream test{ 
       server localhost:8080; 
       server localhost:8081; 
    } 
 
    server { 
        listen       80; 
        server_name  localhost; 
 
        location / { 
            root   e:/wwwroot; 
            index  index.html; 
        } 
 
        # 所有静态请求都由nginx处理,存放目录为html 
        location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { 
            root    e:/wwwroot; 
        } 
 
        # 所有动态请求都转发给tomcat处理 
        location ~ .(do)$ { 
            proxy_pass  http://test; 
        } 
 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   e:/wwwroot; 
        } 
    }

4、web服务器

  • 关键命令:root
  • 当只有静态资源的时候,就可以使用Nginx来做服务器
  • 这样如果访问 http://localhost 就会默认访问到 E://www/data目录下面的index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署
server {
        listen       80;                                                        
        server_name  localhost;                                              

        location / {
               root   e:/www/data;
               index  index.html;
           }
    }

Nginx配置

# 定义工作进程数,通常设置为等于CPU核数
worker_processes  auto;

# 进程文件
pid        /var/run/nginx.pid;

# 工作模式及连接数上限
events {
    worker_connections  1024;  # 单个后台worker process进程的最大并发链接数
}

# 设置日志路径,级别等
http {
    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 /var/log/nginx/access.log main;

    # sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    # 对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 非常重要的应用,可设置为 off,以平衡磁盘 IO 进程,降低系统的 uptime.
    sendfile        on;
    # tcp_nopush     on;

    # 链接超时时间
    keepalive_timeout  65;

    # gzip压缩开关
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;

    # 虚拟主机配置
    server {
        # 监听端口
        listen       80;

        # 域名
        server_name  localhost;

        # 默认请求的静态文件前缀
        location / {
            root   html;
            index  index.html index.htm;
        }

        # 匹配以.php结尾的请求
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

        # 匹配以.html结尾的请求
        location ~ /\.ht {
            deny  all;
        }
    }
}

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: nginx面试题高频问题包括如下几个方面: 1. Nginx中如何限制访问频率? 在Nginx中,可以使用ngx_http_limit_req_module模块来限制访问频率,其原理是基于漏桶算法实现的。可以在nginx.conf配置文件中使用limit_req_zone命令和limit_req命令来限制单个IP的请求处理频率。\[1\] 2. Nginx中如何判断某个IP不可访问? 可以使用Nginx的配置指令来判断某个IP是否可访问。例如,可以使用if语句来判断访问的IP地址是否为特定的IP,如果是,则返回403禁止访问。例如:if ($remote_addr = 192.168.9.115) { return 403; }\[2\] 3. Nginx和Apache的区别是什么? Nginx和Apache是两种常见的Web服务器,它们有一些核心区别。最核心的区别在于Nginx是异步的,多个连接可以对应一个进程,而Apache是同步的,一个连接对应一个进程。此外,Nginx是基于事件的Web服务器,而Apache是基于流程的Web服务器。Nginx在内存消耗和连接方面表现较好,适合负载均衡,而Apache在支持多种语言和插件方面更加灵活。\[3\] 4. 什么是动态资源和静态资源分离? 动态资源和静态资源分离是一种优化Web服务器性能的方法。动态资源是指需要经过服务器处理的资源,例如PHP脚本,而静态资源是指不需要经过服务器处理的资源,例如HTML文件、CSS文件、图片等。通过将动态资源和静态资源分别存放在不同的服务器或者不同的路径下,可以提高服务器的处理效率和响应速度。\[3\] #### 引用[.reference_title] - *1* *2* *3* [Nginx常见面试题整理---40题](https://blog.csdn.net/qq_29974229/article/details/125718921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值