nginx请求转发

nginx请求转发

nginx.conf 配置文件如下:


#user  nobody;
worker_processes  1;

error_log  logs/error.log error;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;
    access_log off;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    client_max_body_size 20m;
        client_body_buffer_size 128k;
    gzip  on;

    send_timeout 500;
        proxy_read_timeout 500;
        proxy_connect_timeout 500;

    server {
        listen       80;

        location  /ABCBank {
             proxy_pass    http://173.16.15.7:867/ABCBank;
             proxy_redirect off ;

             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location  /endpoint {
             proxy_pass    http://173.16.15.7:867/endpoint;
             proxy_redirect off ;

             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location  /AbcManagement {
             proxy_pass    http://173.16.15.7:867/AbcManagement;
             proxy_redirect off ;

             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

}

另外一个实例

server {
                listen       81;

                location  /chanjet {
                proxy_pass    http://10.1.243.55:8080/chanjet;
                proxy_redirect off ;

                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }
        }

配置上述文件的ip是: 172.18.22.72
10.1.243.55是我的ip
若蒙访问的地址是: http://172.18.22.72:81/chanjet/workbench/replacemobile/unbindCode?mobile=123
实际上是访问我的电脑

设置nginx 的web目录

把nginx当做静态服务器

server {
        listen       80;

        location /chanjet {
                add_header Access-Control-Allow-Origin *;
            root /opt/yunyingyong/mainsite/mainsite/src/web_js/www;
        }

        location /chanjet/customer {
             proxy_pass    http://172.18.22.170:8080/chanjet/customer;
             #proxy_redirect off ;

             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location / {
             proxy_pass    http://172.18.22.170:8080;
             #proxy_redirect off ;

             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

负载均衡

目标:我访问jsp/do/action时,会分配到
localhost:8082
localhost:8080
nginx.conf如下:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
 #设定负载均衡的服务器列表
     upstream localhost222 {
    #weigth参数表示权值,权值越高被分配到的几率越大
    server localhost:8082 weight=5;#本机上的Squid开启3128端口
    server localhost:8080  weight=5;

    }

    server {
        listen       80;
        server_name  localhost222;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~* \.(jsp|do|action)$
      {

            index index.jsp;
            proxy_set_header Host $host;
            proxy_pass http://localhost222;
            proxy_set_header X-Real-IP $remote_addr;
        }

}

参考:负载均衡

我的文章

时间: 2024-12-02 14:28:17

nginx请求转发的相关文章

nginx代理 转发请求提示400错误

问题描述 nginx代理 转发请求提示400错误 nginx作代理,相同的配置可以将请求转发到weblogic的7001端口,但是转发至8080端口报400错误:下面是配置文件和日志文件:即http://188.185.1.191:7001/是可以正常访问,但是http://188.185.1.191:8080无法正常访问,http://188.185.1.189:8080是可以正常访问:nginx安装在188.185.1.191服务器上: =========================配置

nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡

一.启用gzip 1 gzip on; 2 gzip_min_length 1k; 3 gzip_buffers 4 16k; 4 gzip_http_version 1.1; 5 gzip_comp_level 2; 6 gzip_types text/plain application/x-javascript text/css application/xml application/json; 7 gzip_vary on; View Code 将上面这段放在nginx.conf文件 ht

nginx请求二次分流问题

问题描述 nginx请求二次分流问题 有这样一个需求: 1) 客户端提交一个请求时,nginx先转发到server1 2) 如果server1返回结果A,直接返回此结果 3) 如果server1返回结果B,将此请求转发到server2并返回server2的处理结果 相当于客户端与nginx之间是一次请求,nginx后端有条件的依次转发到两个server. 请问:nginx架构能否实现这样的需求?

请求转发和请求包含

1.Servlet 容器 编程中的容器我们可以理解为程序运行时需要的环境,那么Tomcat 就是Servlet 的运行环境,就是一个Servlet 容器.Servlet 容器的作用是负责处理客户请求,当Servlet 容器获取到用户请求后,调用某个Servlet,并把Servlet 的执行结果返回给用户.  Servlet 容器的工作流程: ● 当用户请求某个资源时,Servlet 容器使用ServletRequest 对象将用户的请求信息封装起来,然后调用 java Servlet API 中

【JSP开发】通过ServletContext实现请求转发

package cn.edu; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.s

上传图片,如何请求转发到动态ip的服务器上

问题描述 上传图片,如何请求转发到动态ip的服务器上 我的需求是: 通过网页或者手机通过http post上传一个图片,后台servlet接收到该HttpServletRequest实例后,根据一个工具类算法获取到处理给请求的服务器ip,然后将这个http request发送给该ip的服务器. 然后由该ip的服务器获取到网页或者手机上传的图片,存储到该服务器的本地磁盘上. 请问该怎样实现请求的转发呢? 我曾经考虑过使用jsp的forward,但forward只能转发到当前的servlet容器,而

java web http请求转发

java web,如何获取request中的请求参数呢? /*** * Get request query string * @param request * @return byte[] */ public byte[] getRequestStr(HttpServletRequest request){ int contentLength = request.getContentLength(); byte buffer[] = new byte[contentLength]; for (i

jsp请求转发的问题

问题描述 业务流程是这样的(1)客户端A发起一个登录验证请求到应用服务器S1(2)S1把请求转发到第三方服务器S2(3)S2响应返回结果给S1(4)S1通知客户端是否登录成功请问这个用JSP如何实现,一个JSP页面能完成吗?各位牛人,指点下,对这种业务完全没头绪啊,能提供下demo当然更好了,(*^__^*)嘻嘻-- 解决方案 解决方案二:大神呢...............解决方案三:一个JSP当然可以了客户端AJSP页面发送请求,S1服务器拿到数据,与S2服务器通讯并返回一个状态值,S1通过

javaweb servlet中使用请求转发乱码的实现_java

乱码的方式有很多,这里指出一种不容易想到的 *请确保您的页面单独访问正常,经过servlet请求转发时,有PrintWriter out = response.getWriter()不正常,没有正常 解决方式是在执行PrintWriter out = response.getWriter();前加上 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8&