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. JDBC——Statement执行SQL语句的对象

    Statement该对象用于执行静态SQL语句并返回它产生的结果.表示所有的参数在生成SQL的时候都是拼接好的,容易产生SQL注入的问题 PreparedStatement对象是一个预编译的SQL语句 ...

  2. centos7下编译安装redis5.05

    准备环境: 1.一台centos7机器,配置没有什么要求(能联网) 2.下载好redis压缩包 下载redis包: 1.登录redis官网: https://redis.io/download 2.选 ...

  3. springboot静态资源

    https://blog.csdn.net/yali_aini/article/details/83213695 https://blog.csdn.net/sihai12345/article/de ...

  4. NG-ALAIN 边学边记2

    1. 下载Git上的源码  : https://github.com/ng-alain/ng-alain.git 2.解压文件: 3.进入到目录下: 4.打开CMD 切换到 E:\NgAlain\ng ...

  5. Python之路Day06

    小数据池 == 判断两个值是否相等 is -- 是,判断两边的内存地址是否相同 a=10 b=10 print(a is b) id() -- 查看内存地址 代码块 一个py文件,一个函数,一个模块, ...

  6. PCB主线布线规范—高速线之DDR2

    一.DDR2时钟线走线规则a)时钟线包括 MEM_CLKOUT#0.MEM_CLKOUT0.MEM_CLKOUT#1.MEM_CLKOUT1,MEM_CLKOUT#2.MEM_CLKOUT2: MEM ...

  7. 注解 - @Deprecated

    意思是说此方法已过时,过时的原因就是有新的API的类替代了次方法. 这个被划去的方法仍然是可以正常使用的,就是一个提示而已. Java内在的File类中有如下方法 @Deprecated public ...

  8. 【Docker入门篇】

    " @[toc] 所谓Docker Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,于2013年3月以Apache2.0授权协议开源, ...

  9. Reverse is Multiplex, You Need PinTools.

    Read this slide: pin_in_CTF.pdf And this link: pin_in_CTF

  10. JavaScript对象之原型链

    一个js对象,除了自己设置的属性外,还会自动生成proto.class.extensible属性,其中,proto属性指向对象的原型. 对象的属性也有writable.enumerable.confi ...