nginx 基础配置 前端开发配置 代理配置--写个自己看

本文介绍了Nginx的基础概念,包括其作为HTTP服务器和反向代理服务器的角色。重点讲解了正向代理和反向代理的区别,并强调在前端开发中,Nginx常用作静态服务器、反向代理和负载均衡。文中还提供了一个简单的反向代理配置示例,指导如何将域名指向本地服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
对于前后端分离来说更是比较优越到选择,不需要去知道服务器端放在哪里,也不用去关心还不用担心跨域舒服

代理

代理有点像中介,我想去买房,但是房源在哪里?找起来很费事其中还有各种手续要办。这个时候我去找中介,帮我去完成找房源办理各种手续,我只需要等待结果,这个就是代理到流程。
在nginx 中代理流程大概也是这样,对于前端用到最多到是HTTP服务代理
在这里插入图片描述
代理太笼统,具体还分为 正向代理和反向代理

正向代理

正向代理好比媒人,由于种种原因,你不能到对方直接获取消息但是你知道目标是谁,你就和媒人沟通协商,用他到身份去进行沟通,最终获得自己消息,这个就是正向代理

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

vpn 就这比较典型的代表,我们不能访问国外的一些网站,就需要代理来实现,这个代理一般就是正向代理,nginx也可以实现正向代理,只是在多数情况我们使用的是反向代理

方向代理(负载均衡)

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
在这里插入图片描述
在前端开发中用的最多的场景

静态服务器
反向代理,负载均衡。
缓存服务

nginx 反向代理配置

了解基本概念试一下
设定一个小目标:在浏览器输入 www.muzi.com 直接跳转到 本机地址 127.0.0.1:8880
说明一下这个小目标需求逻辑:通过nginx 设置反向代理,当浏览器输入 www.muzi.com,把这个请求地址指向 本机项目地址
找到你的nginx配置文件nginx.conf,打开,找到如下代码,我们只修改一部分就可以,其他的保持默认状态即可

server {
	#server_name  localhost;
	server_name  www.muzi.com;
	location /{
      proxy_pass http://127.0.0.1:8880 
   }
}

启动nginx 不同系统不同的启动方法,发现www.muzi.com 指向了,本地服务。哈哈。好玩吧

上一张网上总结的比较好的图。说了nginx.conf 配置的图,非常形象
在这里插入图片描述
nginx.conf 配置总的就是这么三大块。一个是定义全局变量的区域main;2是event 模块; 3是http服务器,二http服务区域里面的server 可以理解为虚拟服务器(主机设置)一个nginx可以代理很多个就靠这server去设置,
篇幅和能力限制直接上配置的好的加上注解
nginx.conf

#指定启动多少进程来处理请求,一般情况下设置成CPU的核数,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作
worker_processes  1;
events {
    #每一个worker进程能并发处理(发起)的最大连接数
    worker_connections  1024;
}
http {
	#主模块指令,实现对配置文件所包含的文件的设定
    include       mime.types;
    #HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式
    default_type  application/octet-stream;
    #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。
    sendfile        on;
    #长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置
    keepalive_timeout  65;
    #虚拟主机的配置,可以是多个在http模块里面就可以
    server {
      #监听端口
	  listen       8888;
	  #服务器名
	  server_name  localhost;
	  #定义服务器的默认网站根目录位置。如果locationURL匹配的是子目录或文件,root没什么作用,一般放在server指令里面或/下
	  root F:/AXSVN/S102/html5/statichtml;
	  client_header_timeout  3m;
	  #定义负载节点池
	  upstream localhost{
	      #每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器,主要解决动态网站session共享的问题。  
	      ip_hash;
	      server localhost:8888;
	      #server localhost:9999;
     }
	  #基于一个指令设置URI
	  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|JPG|GIF|PNG|JPEG|BMP|SWF|less|eot|jsx|svg|mp4|mp3|ttf|woff|woff2|otf|html|htm|HTM|HTML)$ {
                            expires 1m;
                        }
       location ~ .*\.(js|css)$ {
           expires 1m;
       }
       location /{
       	 //代理的地址	
       	 #当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名
       	 proxy_set_header Host $host;
       	 #如果后端Web服务器上的程序需要获取用户IP,从该Header头获取
       	 proxy_set_header X-Forwarded-For $remote_addr
       	 #代理的地址	
       	 # proxy_pass 指令属于ngx_http_proxy_module 模块,此模块可以将请求转发到另一台服务器
	     proxy_pass http://xxxx/;
	  }
	}
	#虚拟主机的配置,可以是多个在http模块里面就可以
	server {
	listen       9999;
	 ....
	}
   }

对于一个前端应该够用了。哈哈
看到这里给我点个赞,谢谢😊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值