普通视图

发现新文章,点击刷新页面。
昨天 — 2024年7月17日首页

Gunicorn nginx 反代获取真实 ip 地址

2024年7月17日 15:21

闺蜜圈的后台服务使用 gunicorn 运行,对外接口通过 nginx 进行反代。但是反代有个问题,那就是 gunicorn 获取到的服务器的 ip 地址都是 127.0.0.1。

作为一个强迫症能忍受这个?那自然不行啊。

在 nginx 配置文件中增加 proxy_set_header

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

修改 gunicorn 启动参数,修改日志格式为:

--access-logformat='%({X-Real-IP}i)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

重启 nginx 以及 gunicorn 服务,就可以记录真实 ip 地址了:

参数说明:

h is the remote address
l is - (not used)
u is - (not used, reserved)
t is the time stamp
r is the status line
s is the status of the request
b is length of response
f is referrer
a is user agent
You can also customize it with the following extra variables that are not used by default:

T - request time (in seconds)
D - request time (in microseconds)
p - the process id
{Header}i - request header (custom)
{Response}o - response header (custom)

 

参考链接:https://stackoverflow.com/questions/25737589/gunicorn-doesnt-log-real-ip-from-nginx

昨天以前首页

升级LNMP和FRP

2024年6月21日 21:22

每年6月1日军哥的LNMP(下面简称LNMP)会有版本升级,现在已经到了2.1版本了。然而貌似从LNMP后门事件之后,有传闻LNMP已经被卖掉了,现在更新版本也不知道是谁了。也有人在论坛问过,但军哥一直不解释,不回应。从2.1版本出来之后,我关注过论坛一段时间,军哥露面处理问题的次数越来越低了,或者说很久没出来解决水友的问题了。而且虽然发布2.1版本了,但是论坛版本的同步还是2.0。

lnmp2.1主要更新内容

版本2.1最大的更新内容就是增加PHP 8.3,MySQL 8.4,Nginx http3支持。

PHP版本最新是8.3.8,lnmp可以安装到8.3.7,可以通过升级脚本升级到8.3.8,但是lnmp2.0不能升级到PHP8.3版本,顶多升级到PHP8.2.16。

MySQL 8.4我感觉有点卡,而且还有自动停止的问题,不知道是不是虚拟机内存的问题。所以我不敢着急升级到这个版本。

nginx官方稳定版本更新到1.26.1了,自1.25版本支持http3之后,就是说nginx现在默认支持http3了。当然lnmp2.1也默认支持http3了。但是在nginx配置里http2不能在listen 端口后面加字段了,而且通过http2 on启用,而在lnmp2.1里没有纠正这个问题。

另外lnmp2.1里的升级脚本里,还是之前版本的升级脚本,不能实现2.0到2.1版本的升级,或许军哥认为非必要不升级的原则没有升级这个脚本吧。

所以我也不建议升级2.1版本,等明年这个时候再看看下一个版本吧。

nginx升级1.26.1

nginx升级还是很顺利的,没那么麻烦,升级它主要是因为http3。现在nginx都稳定到这个版本了,http3的普及率肯定会越来越高的。

环境是支持http3了,但是你会发现我的网站还不是http3。个人感觉应该是frp的问题,因为本地架设的网站是可以支持http3的。很奇怪,frp官方quic端口监听配置很简单的,但实际没达到效果,不知道哪里出了问题。另外还有个问题就是据说http3在内网穿透之后不能实现真实IP,所以我也在纠结选择http3还是http2。或许能通过反向代理实现真实IP和http3呢?有待证实!

其他环境选择——后羿面板

除了lnmp,宝塔面板是最受欢迎的环境搭建软件了,但是我却一直不喜欢,我自己都觉得莫名其妙。lnmp很早就开始用了,几乎是刚出来的时候就开始用了,它有完整版,1G多些,安装起来不容易因为网络下载出现问题,如果是国外服务器,直接用默认版本下载也是很快的。宝塔我也试过,面板安装的倒是很快,但是安装环境过程中,因为下载PHP,MySQL耗时太长时间,放弃了。

后羿面板,跟宝塔面板一样,但是它更纯净,软件也更新。抱歉,我忘记是哪个博友推荐的了。除了安装软件耗时有点久,其他都还不错。它是基于openresty(我也是第一次听说),而不单是nginx。如果军哥的lnmp坚持不下去了,这也是不错的选择。

升级FRP

自从0.53版本,很久没升级frp了,现在都0.58.1版本了,必须得跟上。升级很简单,覆盖源文件,重启服务即可。

升级PHP

[20240624更新]这几天测试发现用lnmp2.1的升级脚本upgrade.sh可以升级PHP8.2到8.3的版本。然后通过addons.sh升级PHP组件Redis、imageMagick、Exif等等。

版权声明: 本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 皇家元林
本文链接: 升级LNMP和FRP
❌
❌