简述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. D. 旅游景点 Tourist Attractions 状压DP

    题目描述 FGD想从成都去上海旅游.在旅途中他希望经过一些城市并在那里欣赏风景,品尝风味小吃或者做其他的有趣的事情.经过这些城市的顺序不是完全随意的,比如说FGD 不希望在刚吃过一顿大餐之后立刻去下一 ...

  2. Nmap的多进程应用与研究

    Nmap的多进程应用 使用Nmap进行多目标多端口(强调端口数目较多,比如全端口)扫描时,其在执行时间上的表现并不好.本文旨在分析多目标多端口扫描时的速度瓶颈以及减少时间成本的解决方案. 实验 实验环 ...

  3. 812考试总结(NOIP模拟37)[数列·数对·最小距离·真相]

    前言 考得挺憋屈的... 先是搞了两个半小时的 T1 后来发现假了,又没多想跳了.. 然后一看 T2 这不是队长快跑嘛... 先是根据自己的想法打了一遍(考完之后发现是对的..) 然后回想了一下之前的 ...

  4. erlang学习笔记

    安装 Ubuntu Server上: sudo apt-get install erlang 如果安装时下载 太慢,可手工下载deb包( esl-erlang_16.a-rc1_ubuntu_prec ...

  5. awk-07-IO和printf语句

    IO语句 1.getline 2.getline var 把a文件的行,追加到b文件的结尾 把 a 文件的行替换 b 文件的指定字段 把 a 文件的行替换 b 文件的对应字段 3.command | ...

  6. 【原创】利用动态二进制加密实现新型一句话木马之PHP篇

    概述 本系列文章重写了java..net.php三个版本的一句话木马,可以解析并执行客户端传递过来的加密二进制流,并实现了相应的客户端工具.从而一劳永逸的绕过WAF或者其他网络防火墙的检测. 本来是想 ...

  7. 【springcloud alibaba】配置中心之nacos

    接着上一篇的[springcloud alibaba]注册中心之nacos,这一篇主要讲nacos的配置中心能力.nacos的集群部署及持久化请看上一篇. ---------------------- ...

  8. Contos7 克隆实例 以及 配置网络-服务-等相关信息

    以下为我自己整理的克隆虚拟机和设置固定IP的方法,记录一下,以防忘记: 桥接模式网络配置 1.配置ip地址等信息在文件里做如下配置: /etc/sysconfig/network-scripts/if ...

  9. Git pull and push

    转自:https://blog.csdn.net/qq_41306423/article/details/101701991 关于 git pull 和 git pull origin develop ...

  10. Go测试--性能测试分析

    目录 前言 认识数据 benchstat 分析一组样本 分析两组样本 小结 前言 benchmark测试是实际项目中经常使用的性能测试方法,我们可以针对某个函数或者某个功能点增加benchmark测试 ...