分类 Nginx 下的文章

Nginx 暴力解决使用 CDN/负载均衡后日志里记录的 IP 不是用户真实 IP | Nginx 获取真实用户 IP

暴力配置

修改 nginx.confvhost.conf 之类的文件,将以下配置放在 http 里或 server 里,实现的效果请继续往下看
set_real_ip_from   0.0.0.0/0;
real_ip_header     X-Forwarded-For;
real_ip_recursive on;

1. 放在 http 里,放到这里是全局的,一劳永逸

注意:我测试并没有什么异常,即使是加了 CDN 和没加 CDN,Nginx 日志都一样正确记录 IP(前提是你像我这样配置了)

放在 <code>http</code> 里,放到这里是全局的,一劳永逸

2. 放在 server 里,每个网站单独配置

放在 <code>server</code> 里,每个网站单独配置

效果

效果

Nginx/Tengine 添加模块(非覆盖安装)

假设我要添加 nginx-http-concat 这个模块

查看原来的编译参数

nginx -V

返回结果

root@Chuwen:~/tengine-2.3.2# nginx -V
Tengine version: Tengine/2.3.2
nginx version: nginx/1.17.3
built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) 
built with OpenSSL 1.1.1b  26 Feb 2019
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module

添加需要的模块

--add-module=/root/nginx-http-concat-master

重新编译配置

加上之前的参数与新增的参数
# 进入源码目录,假设你没有删除
cd /www/server/nginx

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/root/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module \
--add-module=/root/nginx-http-concat-master
# 添加模块

执行编译,但不安装

make

查看下编译好的二进制文件

ldd objs/nginx |grep lua 

替换 nginx 二进制文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_back_2020.04.06
cp ./objs/nginx /www/server/nginx/sbin/nginx

参考自:https://blog.linuxhub.cn/?p=3220

Nginx如何配置跨域(多个域名)

设需要允许来源为 localhost*.example.com 下所有二级域名的访问,在 nginx 中只需要类似这样配置即可:

location / {
        set $match "";
        # 支持http及https
        if ($http_origin ~* 'https?://(localhost|.*\.example\.com)') {
        set $match "true";
        }
        
        if ($match = "true") {
            add_header Access-Control-Allow-Origin "$http_origin";
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS,DELETE;
            add_header Access-Control-Allow-Credentials true;
        }
        # 处理OPTIONS请求
        if ($request_method = 'OPTIONS') {
            return 204;
        }
    }
————————————————

原文链接:https://blog.csdn.net/moxiaomomo/article/details/82970004

宝塔(BT)面板-Nginx如何开启PHP报错

使用宝塔(BT)面板搭建的 LNMP 环境(L:Linux,N:Nginx,M:MySQL,P:PHP),本地测试代码时,没有发现什么问题,但是,放到服务器上时就出现 500 错误了,没有任何错误提示,查看日志,也只能看到 500,很是纳闷,然后Goole查了些资料,在这里做一个笔记。

- 阅读剩余部分 -