文档章节

Nginx正向代理非80端口服务

China_OS
 China_OS
发布于 2016/06/24 18:07
字数 221
阅读 669
收藏 2

  默认情况下apache/nginx的正向代理,都默认访问的服务是常规的80端口,但是总有那么几个特殊服务是非80端口的,如果非要用正向代理来解决(用反向代理来解决更容易,但有时候服务场景限制只能使用正向代理),那么可以使用nginx+lua来解决:

**通过获取客户端请求的端口号,然后追加到要正向代理的地址上即可。 **

if ($http_host ~ "(:(\d){4})$"){
    set_by_lua $port "
        local host = ngx.req.get_headers()[\"host\"];
        local port = string.sub(host,-4);
        return port ";
    set $passport $port ;
    proxy_pass http://$host:$passport$request_uri;
}

if ($http_host ~ "(:(\d){3})$"){
    set_by_lua $port "
        local host = ngx.req.get_headers()[\"host\"];
        local port = string.sub(host,-3);
        return port ";
    set $passport $port ;
    proxy_pass http://$host:$passport$request_uri;
}

if ($http_host ~ "(:(\d){2})$"){
    set_by_lua $port "
        local host = ngx.req.get_headers()[\"host\"];
        local port = string.sub(host,-2);
        return port ";
    set $passport $port ;
    proxy_pass http://$host:$passport$request_uri;
}

if ($http_host !~ :){
        proxy_pass http://$host$request_uri;
}

© 著作权归作者所有

上一篇: nscd.conf
下一篇: Gor 流量复制实战
China_OS
粉丝 422
博文 460
码字总数 513987
作品 0
静安
技术主管
私信 提问
加载中

评论(3)

l
liuyang_0617

引用来自“China_OS”的评论

引用来自“liuyang_0617”的评论

这个是一个单独lua脚本还是配到nginx.conf里面,我配到conf里面,启动就报错,这个if后面判断就开始出现在报错信息里面了,
location ~ / {

root html;
index index.html index.htm;

proxy_set_header HOST $http_host;
proxy_buffers 256 4k;
proxy_connect_timeout 600;

proxy_set_header Accept-Encoding "";

if ($http_host !~ :)
{
proxy_pass http://$host$uri$is_args$args;
}

if ($http_host ~ "(:(\d){2})$")
{
set_by_lua $port "
local host = ngx.req.get_headers()[\"host\"];
local port = string.sub(host,-2);
return port ";
set $cookie_passport $port;
proxy_pass http://$host:$cookie_passport$uri$is_args$args;
}

if ($http_host ~ "(:(\d){3})$")
{
set_by_lua $port "
local host = ngx.req.get_headers()[\"host\"];
local port = string.sub(host,-3);
return port ";
set $cookie_passport $port;
proxy_pass h

谢谢,启动成功了,等测试以后再请教
China_OS
China_OS

引用来自“liuyang_0617”的评论

这个是一个单独lua脚本还是配到nginx.conf里面,我配到conf里面,启动就报错,这个if后面判断就开始出现在报错信息里面了,
location ~ / {

root html;
index index.html index.htm;

proxy_set_header HOST $http_host;
proxy_buffers 256 4k;
proxy_connect_timeout 600;

proxy_set_header Accept-Encoding "";

if ($http_host !~ :)
{
proxy_pass http://$host$uri$is_args$args;
}

if ($http_host ~ "(:(\d){2})$")
{
set_by_lua $port "
local host = ngx.req.get_headers()[\"host\"];
local port = string.sub(host,-2);
return port ";
set $cookie_passport $port;
proxy_pass http://$host:$cookie_passport$uri$is_args$args;
}

if ($http_host ~ "(:(\d){3})$")
{
set_by_lua $port "
local host = ngx.req.get_headers()[\"host\"];
local port = string.sub(host,-3);
return port ";
set $cookie_passport $port;
proxy_pass h
l
liuyang_0617
这个是一个单独lua脚本还是配到nginx.conf里面,我配到conf里面,启动就报错,这个if后面判断就开始出现在报错信息里面了,
nginx反向代理解决跨域问题

nginx的作用 1.代理 2.web静态服务器 代理(proxy) 允许一个网络终端(一般为客户端),通过这个服务于另一个网络终端(一般为服务器)进行非直接的连接;提供代理服务的电脑系统或其他类型的网络终...

funnycoderstar
2018/05/08
0
0
nginx做反向代理时出现302错误

现象:nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 原因:proxy.conf文件中定义的proxysetheader Host $host; 意思是nginx接收到浏览器请求后修改请求头中的host信息,然后...

寻知者
2018/05/26
0
0
Nginx--入门及安装

1 Nginx是一款轻量级的Web服务器, 特点:支持反向代理,负载均衡,动静分离。。。 正向代理:需要我们的用户,手动设置代理服务器单点IP和端口号 反向代理:代理服务器的,用户不需要设置。...

btwangzhi
2017/11/15
0
0
Nginx 反向代理 负载均衡 虚拟主机配置

通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常用配置的说明。即学即用,你还在等什么?...

Java架构
2018/07/11
0
0
搭建nginx反向代理用做内网域名转发

由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口。非8...

庆沉
2015/07/30
0
1

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部