nginx配置文件: /usr/local/nginx1.16.1/conf/nginx.conf

nginx.conf默认的server配置:

server{
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
}

配置location时,优先配置子目录,最后是默认根目录。比如下面,先配置/ent-boot/,这样,如果用户的请求地址是/ent-boot/这个路径,nginx当扫描到这个/ent-boot/后,就直接做转发不再继续扫描配置了。
其中,proxy_pass:表示代理转发,将请求转发到指定的url上。

server {
listen 9999;
server_name localhost;
location /ent-boot/ {
proxy_pass http://192.168.40.84:8802/ent-boot/;
} location / {
root /www/front/;
index index.html index.htm;
}
}

proxy_pass指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。
例如如下配置:

server {
listen 80;
server_name buguge.com www.buguge.com; location /proxy/ {
proxy_pass ***;
}
}

当访问 http://buguge.com/news/a.html 时,

  1. proxy_pass: http://127.0.0.1:9999/; #则,代理到URL: → http://127.0.0.1:9999/a.html
  2. proxy_pass: http://127.0.0.1:9999; #则,代理到URL: → http://127.0.0.1:9999/news/a.html
  3. proxy_pass: http://127.0.0.1:9999/article/; #则,代理到URL: → http://127.0.0.1:9999/p/a.html
  4. proxy_pass: http://127.0.0.1:9999/article; #则,代理到URL: → http://127.0.0.1:9999/articlea.html

为了方便记忆和规范配置,建议所有的 proxy_pass 后的url都以“/”结尾。参考:https://www.cnblogs.com/yyxianren/p/10831511.html

如果反向代理到别的域名的网站上,要指定请求头的Host的值为那个域名,否则会导致代理出现死循环。参考:https://blog.csdn.net/bowei026/article/details/90417914

要实现负载均衡,要使用upstream指令。

upstream emei_server {
ip_hash;
server 10.0.2.75:9083 weight=10 max_fails=0;
server 10.0.2.76:9083 weight=10 max_fails=0;
}
server{
...
location / {
proxy_pass http://emei_server;
proxy_set_header Host $host;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header remote-addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100m;
client_body_buffer_size 512k;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffers 4 256k;
proxy_buffer_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
proxy_busy_buffers_size 256k;
} }

ip_hash:可以确保访问一个被同一台服务器处理, 除非分配的server宕机。 如果宕机 则请求被发往其他的机器。适用于需要登录并且session仅保存在自己节点里的站点。

参考:Nginx的upstream反向代理、负载均衡详解 https://www.cnblogs.com/hoaprox/p/10132409.html
nginx负载均衡的策略有轮询、权重轮询、ip_hash、url_hash等。参考:nginx配置-upstream https://www.jianshu.com/p/ab7cf5484e8f

nginx反向代理配置及常见指令的更多相关文章

  1. nginx反向代理配置及优化

    nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...

  2. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  3. nginx之旅(第三篇):代理、正向代理、反向代理、代理的原理、nginx反向代理场景、nginx反向代理配置、nginx反向代理语法

    一.代理服务与反向代理 什么是代理服务 代理-代理办理(代理理财.代理收货.代理购物等等). 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forw ...

  4. nginx反向代理配置

    最近在项目中使用nginx反向代理,根据不同的请求路径,将请求分发到不同服务.下面的示例主要完成如下功能 /prod/路径的请求分发到prod服务 /test/路径的请求分发到test服务 创建文件夹 ...

  5. nginx 反向代理配置(二)

    上一篇文章主要是对 nginx 各个模块做了一个介绍,以及对什么是反向代理在文章开头做了一个简单介绍,这篇文章我们主要来看下如何进行 nginx 反向代理的配置 proxy 模块      nginx ...

  6. nginx 反向代理配置(一)

    文章参考:https://blog.csdn.net/physicsdandan/article/details/45667357       什么是代理?       代理在普通生活中的意义就是本来 ...

  7. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  8. Nginx反向代理配置可跨域

    由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...

  9. Nginx反向代理配置配置实例

    为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后 ...

随机推荐

  1. JDK8-》 ⽅法引⽤与构造函数引⽤

    以前⽅法调⽤ 对象.⽅法名 或者 类名.⽅法名 jdk1.8提供了另外⼀种调⽤⽅式 ::   说明:⽅法引⽤是⼀种更简洁易懂的lambda表达式,操作符是双冒号::,⽤来直接访问类或者实例 已经存在的 ...

  2. 创建JDBC六个步骤

    JDBC库中所包含的API通常与数据库使用于: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改数据库中的数据记录 创建JDBC应用程序 建立一个JDBC应用 ...

  3. 安装proxmox VE(PVE)教程

    proxmox VE,又叫PVE,全称是 Proxmox Virtual Environment 官网地址:https://www.proxmox.com/en/ 1)在官网下载PVE最新镜像,笔者下 ...

  4. Oracle的物理结构的三种文件

    .dbf数据文件,是用于存储数据库数据的文件,例如表中的记录,索引,数据字典信息等,可以通过系统数据字典DBA_DATA_FILES查看相关信息.与逻辑角度的表空间(并不是真正的文件)对应,一个表空间 ...

  5. sql查询 —— 模糊查询

    --模糊查询 --like --%至少替换一个 -- _只替换一个 -- 查姓李的人 select *from student name like "李%"; -- 查名为杰伦的人 ...

  6. python使用libnum,gmpy2快速解RSA

    直接贴出Pcat师傅的解题脚本 # -*- coding:utf8 -*- __author__='pcat@chamd5.org' import libnum import gmpy2 n=7306 ...

  7. 基于pyqt5的图片素材批量处理工具

    功能 分辨率的批量转换,文件夹递归查找 像素偏移量批量调整,文件夹单层查找 画布的大小的批量进行调整,不进行缩放,文件夹单层查找 界面 通过PyUIC生成的代码 # -*- coding: utf-8 ...

  8. Python之路【第三十二篇】:django 分页器

    Django的分页器paginator 文件为pageDemo models.py from django.db import models # Create your models here. cl ...

  9. 月薪20k的web前端开发程序员,他们都会的这6招

    web前端工程师是近几年的新兴职业,也是目前火爆而且高薪的职业.不同的公司也有不同的叫法,比如:网页界面开发,网站设计等,要学好web前端开发,需要掌握什么方法与技巧? 一.div和table 这个是 ...

  10. 解决无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

    错误截图: 第一反应想到的是环境变量没有配置好,再仔细检查一下,并没有错误 在cmd窗口运行命令“ babel --version ”,如果出现对应的版本号,那就说明环境变量是正确的 解决方案: 用管 ...