简述Nginx应用场景(前后端)

当我们开发 vue 项目中可以通过 proxyTable 进行跨域,但如果是原生的 html+css+js ,或者其他没有跨域插件的项目中,想要跨域就要引入配置许多的外部包,整个流程操作起来耗时耗力耗资源,这时应用场景就很适合 Nginx 出场了。

 Nginx 通用性很强,甚至可以为一个简单的html项目开启服务并实现 http 代理,但是这种应用场景一般存在服务器中由后端开发人员来控制。并且也可以同时代理多个来自不同域名的服务,近年来后端热门的微服务概念就可以通过Nginx服务实现。nginx也可以通过反向代理将本地文件的引用指向远程服务器中的某一文件,后端开发应该都已经很熟悉这个工具。

前端的应用场景不需要这么复杂,只需要在没有且不需要引入proxyTable这样的插件时想起Nginx这一工具即可,因为当前端项目打包与后端服务放在生产环境的同一服务器中,便不存在跨域理念,所以我们只需要在本地能够调用接口服务保证自己的页面没问题就可以了,Nginx的灵活性也体现在此。


Nginx配置 - ./nginx-1.6.0-ems/conf/nginx.conf

 1 #user  nobody;
2 worker_processes 4;
3 #error_log logs/error.log;
4 #error_log logs/error.log notice;
5 #error_log logs/error.log info;
6
7 #pid logs/nginx.pid;
8
9
10 events {
11 worker_connections 1024;
12 }
13
14
15 http {
16 include mime.types;
17 default_type application/octet-stream;
18
19 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
20 # '$status $body_bytes_sent "$http_referer" '
21 # '"$http_user_agent" "$http_x_forwarded_for"';
22
23 #access_log logs/access.log main;
24
25 sendfile on;
26 #tcp_nopush on;
27
28 #keepalive_timeout 0;
29 keepalive_timeout 65;
30
31 #gzip on;
32
33 include E:/nginx-1.6.0-ems/conf/my_system_v4.conf;
34 }

行2   工作进程数 默认 - 1,可依据电脑的配置,开任务管理器 -> 性能 看到CPU配置,如电脑是双核4线程CPU,就可以设置为4,启动Nginx后打开任务管理器,Nginx共启动了5个进程,我一直以为应该是4个进程,这里我也不太清楚为什么有5个进程,猜测是多出一个主程序进程。

行11 单个工作进程可以允许同时建立外部连接的数量,数字越大能同时处理的连接越多,默认 - 1024,如有需要可依据配置调大到 - 100000。worker_connections的配置有两个指标:

1) 内存 - 每个连接分别对应一个read_event、一个write_event事件,两个事件占用96字节,一个连接数大概占用232字节,总计328 byte,因此,100k 连接数 * 328 byte / 1024 / 1024 = 31 M,这只是nginx启动时connections连接数所占用的。

2) 进程最大可打开文件数 - 进程最大可打开文件数受限于操作系统,通过 ulimit -n 命令查询,以前是1024,现在是65535.

行33 内文件的代码也可以直接写在 nginx.conf 中,分开是为了在开发多个项目时通过引入不同文件能够快速切换代理链接。


Nginx配置 - ./nginx-1.6.0-ems/conf/my_system_v4.conf

 1 # 负载均衡
2 upstream my-sys-pool {
3 server localhost:8787;
4 }
5 server {
6 listen 9920;
7 server_name localhost;
8 client_max_body_size 10m;
9 location ^~ /saveTemp/ {
10 proxy_pass http://218.***.***.***:8080;
11 proxy_set_header HOST $host;
12 proxy_set_header X-Real-IP $remote_addr;
13 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14 proxy_cache_key $host$uri$is_args$args; }
15
16 # html
17 location ~ \.(html|gif|jpg|jpeg|png|bmp|swf|eot|svg|ttf|woff|js|css|json|txt|xml|pdf|mp4|mp3)$ {
18 #root E:/workSpace/myProject;
19 proxy_pass http://localhost:8686;
20 proxy_set_header X-Real-IP $remote_addr;
21 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
22 proxy_cache_key $host$uri$is_args$args;
23 }
24
25 location ^~ /my-sys/ {
26 proxy_pass http://218.***.***.***:8080;
27 proxy_set_header HOST $host;
28 proxy_set_header X-Real-IP $remote_addr;
29 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
30 proxy_cache_key $host$uri$is_args$args;
31 }
32 }

行6   是代理成功后的地址,也就是说假设project运行在localhost的8686端口,这时9920应该是无服务项目的,访问结果是localhost拒绝我们的访问请求。而8686端口因为请求的是其他服务器的api,虽然页面和样式成功渲染,但api请求一直是pending直到请求超时,通过Nginx成功代理后访问9920端口则会成功返回调用正确接口的project项目。

行9   内代码块作用是重定向本地文件地址,当页面请求本地文件夹 /saveTemp目录中文件时,重定向至请求218.***.***.***:8080的同路径文件。这样请求的就是服务器中文件而不是本地文件,浏览器地址栏仍显示本地 /saveTemp。

行17*   作用是将 8686端口 的服务中转代理到 9920端口,在运行项目时不通过 localhost:8686 而是运行 localhost:9920 即可。

行18   为本地静态资源启动服务.

行25   将/my-sys这个开头的接口请求代理到http://218.***.***.***:8080.

- END -


查看我的另一篇文章:Nginx:常用基本命令与异常处理

Nginx:多项目开发配置跨域代理的更多相关文章

  1. eclipse加速/Nginx配置跨域代理

    下班时间到啦! --下班都是他们的,而我,还是什么都没有. eclipse加速 去掉包含js文件的包的js验证,否则每次启动都需要进行校验(右击项目->properties) Nginx配置跨域 ...

  2. vue-cli配置跨域代理

    现在使用vue大多使用了前后端分离模式,因此游览器经常显示跨域失败的信息,现在跨域的方式很多种,主要分两大类,ajax跨域,dom跨域,具体的方法就不例举啦. vue-cli作为一个强大的脚手架,内置 ...

  3. nginx配置跨域、gzip加速、代理详细讲解

    1.配置跨域 这个很简单,直接打开配置nginx.conf ,在http下配置下面三行代码:当然如果你是想某一个虚拟主机下跨域,那就在哪个server下面添加 add_header Access-Co ...

  4. 使用 Nginx 部署前后端分离项目,解决跨域问题

    前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...

  5. vue-cli 前端开发,后台接口跨域代理调试问题

    使用 webpack的方式开发的时候,前台开发过程中需要调用很多后台的数据接口,但是通常前后台分离的开发方式,后台的接口数据很可能是不方便或者是不能在前端同学的电脑上运行的,也就出现了所谓的跨域问题. ...

  6. Nginx 跨域代理

    安装环境: win10 nginx-1.17.2 安装: 在写前端调用后台接口时,报了跨域的错误. 调试地址:http://localhost:5500/demo/encAjax.html 接口地址: ...

  7. vue开发环境配置跨域,一步到位

    本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问,前端跨域解决方案 production:产品 生产环境 development:开发 开发环境 1 ...

  8. Next.js 配置接口跨域代理转发

    使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能. 先安装好 express 和 http-proxy-middlewa ...

  9. NGINX: 配置跨域请求

    说明: 内容全部来自 SegmentFault Developer Nginx 配置跨域请求 跨域请求失败, nginx 报错: 403 No 'Access-Control-Allow-Origin ...

随机推荐

  1. Python实现猜数字游戏

    Python中实现猜数字游戏代码如下: import random # 引入随机数标准库-random # 定义数字上下限和最大游戏次数 min_num = 1 max_num = 10 guess_ ...

  2. Nacos 笔记

    Nacos 笔记 目录 Nacos 笔记 1. Nacos简介 1.1 主流配置中心对比 1.2 主流注册中心对比 1.3 Nacos特性 2. 安装启动 支持外部 MySQL 3. 配置管理 3.1 ...

  3. 一、MinIO的基本概念

    MinIO的官方网站非常详细,以下只是本人学习过程的整理 一.MinIO的基本概念 二.Windows安装与简单使用MinIO 三.Linux部署MinIO分布式集群 四.C#简单操作MinIO 一. ...

  4. LaTex公式语法教程及手册(附emlogpro公式显示插件katex说明)

    目录 第一列 第二列 第三列 效果 求和(使用\sum标签) 文本效果 本插件简介 积分(使用\int标签) 文本大小 LaTex是什么 空格 特殊符号 LaTex公式使用教程及手册 定界符 LaTe ...

  5. 寻找写代码感觉(一)之使用 Spring Boot 快速搭建项目

    写在前面 现在已经是八月份了,我已经荒废了半年居多,不得不说谈恋爱确实是个麻烦的事,谈好了皆大欢喜,分手了就是萎靡不振,需要很长一段时间才能缓过来. 人还是要有梦想的,至于实现只不过是一个契机,但凡不 ...

  6. 【原创】Dubbo 2.7.8多个远程代码执行漏洞

    马上年底了,发现年初定的几个漏洞的KPI还没来得及完成,趁着最近有空赶紧突击一波,之前业务部门被爆过Dubbo的漏洞,干脆就把Dubbo拖过来挖一把.之前没用过Dubbo,既然要挖它就先大体了解了一下 ...

  7. SQL注入的那些面试题总结

    一.知识储备类 1.SQL与NoSQL的区别? SQL:关系型数据库 NoSQL:非关系型数据库 存储方式:SQL具有特定的结构表,NoSQL存储方式灵活 性能:NoSQL较优于SQL 数据类型:SQ ...

  8. 【C语言】浮点型在内存中的存储

    1. 摘要 在了解到C语言中整型是以二进制补码形式存储在内存中后,我们不禁很好奇:那么浮点型的数据是以什么形式存储在内存中的呢? 实际上,早在1985年,电气电子工程师学会就制定了IEEE 754标准 ...

  9. NOIP 模拟 $16\; \rm Lost My Music$

    题解 \(by\;zj\varphi\) 一道凸包的题 设 \(\rm dep_u\) 表示节点 \(u\) 的深度,那么原式就可化为 \(-\frac{c_v-c_u}{dep_v-dep_u}\) ...

  10. 熟悉而陌生的新朋友——IAsyncDisposable

    本文作者--句幽 在.NET Core 3.0的版本更新中,官方我们带来了一个新的接口 IAsyncDisposable. 小伙伴一看肯定就知道,它和.NET中原有的IDisposable接口肯定有着 ...