文档章节

nginx同时支持反向代理和鉴权配置一例

blanch-kyle
 blanch-kyle
发布于 2015/11/26 16:28
字数 660
阅读 283
收藏 0
配置要求:
1.支持反向代理,由nginx处理静态资源,后端的tomcat处理动态页面。
2.所有的请求必须先经过鉴权(包括静态资源)。
3.如果鉴权不通过则需要跳转到指定页面。


处理过程:
反向代理nginx自带可以实现,鉴权操作使用插件ngx_http_auth_request_module实现。


配置内容及说明如下(大体流程没问题,部分配置后期可能需要处理):

#工作进程,根据硬件调整,大于等于cpu核数

worker_processes  1;

 

events {

         #使用epollI/O 模型

    use epoll;

 

#工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行,每个进程允许的最多连接数, 理论上每台nginx服务器的最大连接数为worker_processes*worker_connections

worker_connections  1024;

 

}

 

#设定http服务器,利用它的反向代理功能提供负载均衡支持

http {

         #设定mime类型,类型由mime.type文件定义

include       mime.types;

#设置文件使用的默认的MIME-type

default_type  application/octet-stream;

 

#sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,
对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime

sendfile        on;

#keepalive超时时间。

keepalive_timeout  65;

 

#负载均衡, weight(权重)

    upstream authserver {

             server 192.168.30.33:11238 weight=10;

             server 192.168.30.34:11238 weight=5;

    }

        

     upstream jspserver {

               server 192.168.30.33:11238 weight=10;

             server 192.168.30.34:11238 weight=5;

    }

 

         #配置虚拟机

server {

         #配置监听端口

listen       3333;

                  

                   #当出现指定的错误时,指定需要跳转的页面。

error_page  403         =       /403.html;

 

 

#配置访问域名:登录页面都有访问权限

                  location = /login.html {

                            #根目录

                 root /wwwroot/;

                            #允许所有人访问

                 allow all;

                            break;

        }

#配置访问域名:没有权限的人要重定向到登录页面

                  location = /403.html {

             root /wwwroot/;

                            #域名重定向到登录页面

            rewrite ^/(.*)$ http://$host:3333/login.html permanent;

            allow all;

             }

                   #配置访问域名:访问静态资源

                  location /static {

                            #需要到auth去认证

                       auth_request /auth;

                       root /wwwroot/;

                  }

                   #配置访问域名:访问动态页面

                  location / {

                            #需要到auth去认证

            auth_request /auth;

                            #设置头部的一些信息

                 proxy_set_header Host $http_host;

                 proxy_set_header X-Real-IP $remote_addr;

                 proxy_set_header X-Scheme $scheme;

                            #请求负载均衡

                 proxy_pass http://jspserver;

        }

                   #配置访问域名:认证处理

                  location = /auth {

                       proxy_pass http://authserver;

                       proxy_pass_request_body off;

                       proxy_set_header Content-Length "";

                       proxy_set_header X-Original-URI $request_uri;

                  }


    }
}


附:

nginx安装:
./configure --prefix=/usr/local/nginx  --add-module=/root/ngx_http_auth_request_module-662785733552/
make
make install

© 著作权归作者所有

共有 人打赏支持
blanch-kyle
粉丝 0
博文 2
码字总数 865
作品 0
杭州
私信 提问
深入玩转K8S之如何访问业务应用(Traefik-ingress篇)

上篇懒得写了索性转载了一篇nginx-ingress的,本篇我们来看神器Traefik,我个人是比较看好和偏向与Traefik的,它轻便易用而且还有节目。 先介绍下什么是Traefik,Traefik是一个为了让部署微服...

Devin
08/02
0
0
nginx 学习笔记(四)nginx + lua 使用 ssl 验证 浏览器证书

场景:接着笔记(三)的鉴权,需要先调用第三方服务进行鉴权,第三方对应的浏览器需要导入证书,否则就会报400错误,只有当鉴权成功后才能往下进行反向代理,此处就不强调如何生成证书,如何...

zhu_kai1
08/29
0
0
java 服务器获取请求的IP方法之总结

项目中需要和第三方平台接口,加了来源IP鉴权功能,测试时发现没有问题,但是部署以后发现存在问题,一直鉴权不通过,一群人抓瞎。 我找到那块的代码,跟了一遍流程发现逻辑没有啥问题,但是...

IT_小翼
2015/03/13
0
0
GitLab的安装及使用(CentOS 7)

一、前言 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。 它拥有与Github类似的功能,能够浏览源代码,管理...

wzlinux
2017/10/22
0
0
request.getHeader("x-forwarded-for")获取不到IP

1、 获取不到IP有可能是客户端不是http请求:建议你public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.leng......

YaZi-Liu
2016/07/15
62
0

没有更多内容

加载失败,请刷新页面

加载更多

[LintCode] Linked List Cycle(带环链表)

描述 给定一个链表,判断它是否有环。 样例 给出 -21->10->4->5, tail connects to node index 1,返回 true。 这里解释下,题目的意思,在英文原题中,tail connects to node index 1 表示的...

honeymose
16分钟前
3
0
Android :报错Your project path contains non-ASCII characters.

报错内容如下 Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See ht......

lanyu96
27分钟前
2
0
Nginx平滑添加模块

Nginx已经编译安装并运行了一段时间, 然后某一天, 发现需要用到某个模块但当初没有编译, 这个时候怎么办呢? 卸载重新安装肯定可以的, 如果Nginx版本没有变更的话, 则有一个相对平滑的方法来添...

老菜鸟0217
32分钟前
5
0
spark安装测试

spark安装测试 由于本地已经安装好hadoop相关组件,所以本文是在yarn的基础上对spark进行安装及测试 确保hdfs及yarn成功启动,hadoop版本为2.7.3 安装scala,由于本人安装的spark是2.4.0,对应...

-九天-
46分钟前
4
0
周末看完了《电能计量自动化技术》

整体质量还行,下面分别将心得记录如下: 第一章:发展历程可以看看,现在算是智能电网阶段 2:讲主站系统。以文件进行各模块的交互很值得思考,尤其是批量数据,多团队合作的情况下。另外线...

max佩恩
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部