网站首页 > 技术教程 正文
先介绍一下常见的nginx配置正向代理的方式:
nginx配置正向代理:
server {
resolver 114.114.114.114;
resolver_timeout 5s;
listen 10000;
allow 192.168.247.129;
deny all;
access_log /home/nginx/nginx/logs/proxy.access.log;
error_log /home/nginx/nginx/logs/proxy.error.log;
location / {
proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
proxy_connect_timeout 30;
}
resolver:域名解析服务器(114.114.114.114或者8.8.8.8)
listen: 外网访问代理服务器的端口
allow 192.168.247.129; 放行的白名单
deny all 黑名单,除了上面的白名单,其他的全部拦截
access_log 接入日志路径
error_log 错误日志路径
proxy_pass 把内网访问的请求,转到外网
这种常规的配置带来的一个问题就是:非80端口,转发不出去。$scheme://$host$request_uri 这个表达式是没有端口的,也就是默认是80端口。很纠结的事情出来了,非80端口的怎么办呢?
下面我们来介绍一种非80端口的方式
介绍:ngx_lua – 把lua语言嵌入nginx中,使其支持lua来快速开发基于nginx下的业务逻辑
以下的包是支持nginx-1.14.2.tar.gz,nginx的版本不一样,需要的lua包可能不一样(安装出现报错,可能就是版本的问题,我换了好几个)
使用nginx用户下载:(一般是拿nginx用户来装nginx,如果用root那就直接操作)
wget https://luajit.org/download/LuaJIT-2.0.4.tar.gz
wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.13.tar.gz
tar -zxvf LuaJIT-2.0.4.tar.gz
tar -zxvf v0.2.19.tar.gz
tar -zxvf v0.10.13.tar.gz
切换root帐号:su - root
cd LuaJIT-2.0.4
make install PREFIX=/usr/local/luajit
echo "/usr/local/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
ldconfig
(上面这步操作,用nginx操作的话,nginx后面编译或者nginx启动的时候会有问题,我尝试了很久,感觉必须用root来操作)
切换到安装nginx的用户:su - nginx
#注意环境变量!
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
编译nginx:
cd nginx-1.14.2
./configure --prefix=/home/nginx/nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-stream --add-module=/home/nginx/nginx-upsync-module-master --add-module=/home/nginx/nginx_upstream_check_module-master --add-module=/home/nginx/nginx-module-vts-master --add-module=/home/nginx/ngx_devel_kit-0.2.19/ --add-module=/home/nginx/lua-nginx-module-0.10.13
我编译了http,tcp的然后加了几个第三方组件,不需要的可以删掉
./configure --prefix=/home/nginx/nginx --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-stream --add-module=/home/nginx/ngx_devel_kit-0.2.19/ --add-module=/home/nginx/lua-nginx-module-0.10.13
编译完成,生成目录:/home/nginx/nginx
在nginx.conf下面配置正向代理:
server {
resolver 114.114.114.114;
resolver_timeout 5s;
listen 10000;
allow 192.168.247.129;
deny all;
access_log /home/nginx/nginx/logs/proxy.access.log;
error_log /home/nginx/nginx/logs/proxy.error.log;
location / {
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 $scheme://$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 $scheme://$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 $scheme://$host:$passport$request_uri;
}
if ($http_host !~ :){
proxy_pass $scheme://$host$request_uri;
}
proxy_set_header Host $http_host;
}
}
allow 192.168.247.129;
deny all;
这个顺序不要跌倒,我试过的,必须这样
location里面的代码不是我写的,我从网上拷的,毕竟不是专门写nginx开发的
测试一下:
猜你喜欢
- 2024-10-09 openresty代替nginx并使用lua扩展功能
- 2024-10-09 Redis弱事务性与Lua脚本原子性分析
- 2024-09-08 基于Nginx+lua的蓝绿发布系统(lvs与nginx)
- 2024-09-08 Go Web 框架 Gin 实践17—用 Nginx 部署 Go 应用
- 2024-09-08 一文看懂灰度发布——基于Nginx+Lua+Redis
- 2024-09-08 Lua 基础入门(lua经典详细入门教程中文pdf)
- 2024-09-08 Redis中使用Lua脚本来实现并发下的原子操作
- 2024-09-08 运维篇—基于Nginx+Lua实现的灰度发布
- 2024-09-08 Nginx+Lua+Redis实现高性能缓存数据读取
- 2024-09-08 OpenResty实战-Lua入门-Lua模块(openresty教程)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)