相关疑难解决方法(0)

用nginx真正记录POST请求体(而不是" - ")

我正在尝试记录POST正文,并添加$request_bodylog_formatin http子句中,但access_log命令只是在我发送POST请求后使用以下内容打印" - ":

curl -d name=xxxx myip/my_location
Run Code Online (Sandbox Code Playgroud)

我的log_format(在http子句中):

log_format client '$remote_addr - $remote_user $request_time $upstream_response_time '
                  '[$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
Run Code Online (Sandbox Code Playgroud)

我的位置定义(在服务器子句中):

location = /c.gif {  
  empty_gif;  
  access_log logs/uaa_access.log client;  
}
Run Code Online (Sandbox Code Playgroud)

如何从curl打印实际的POST数据?

post logging webserver http nginx

25
推荐指数
1
解决办法
3万
查看次数

如何使用nginx将address.com/foo/bar重定向到address.com:port/bar?

我在我的服务器ansel.ms上运行nginx,在ansel.ms:46156上运行了node.js应用程序.

我想设置nginx,以便重定向所有内容

ansel.ms/rhythm
Run Code Online (Sandbox Code Playgroud)

ansel.ms:46156.


ansel.ms/rhythm/sub/path
Run Code Online (Sandbox Code Playgroud)

应该成为

ansel.ms:46156/sub/path
Run Code Online (Sandbox Code Playgroud)

这是我的网站文件 - 可用:

upstream rhythm {
    server ansel.ms:46156;
}

server {
    listen   80;
    server_name ansel.ms www.ansel.ms;
    access_log /srv/www/ansel.ms/logs/access.log;
    error_log /srv/www/ansel.ms/logs/error.log;

    location / {
        root   /srv/www/ansel.ms/public_html;
        index  index.html index.htm;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /srv/www/ansel.ms/public_html$fastcgi_script_name;
    }

    location /rhythm{
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://rhythm;
        proxy_redirect off;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不太了解它的作用(proxy_set_header的东西),我只是从几个来源复制和粘贴它.

它不起作用.

你能给我一个暗示要改变的东西吗?这样做我上面描述的是什么?谢谢!

port proxy nginx

13
推荐指数
1
解决办法
2万
查看次数

将nginx请求保存为文件的最佳方法?

我正在寻找一种解决方案,通过nginx(v1.2.9)尽快(通过最低开销)保存通过http发送的数据(例如作为POST ).我尝试了以下nginx配置,但没有看到目录中写入的任何文件:

server {
  listen 9199;
  location /saveme {
    client_body_in_file_only on;
    client_body_temp_path /tmp/bodies;
  }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么? 和/或有更好的方法来实现这一目标吗?(理想情况下,写入的数据应该是每个请求一个文件,如果它本质上是"原始"的则无关紧要.文件的后处理将通过队列通过单独的进程完成.)

logging http nginx

8
推荐指数
1
解决办法
3100
查看次数

MySql插入高CPU负载

我有nginx接收POST请求和一个小的PHP脚本,将请求体放到MySql.当我每秒有300个POST时,问题是MySql CPU使用率非常高.我希望MySql是一个快速的东西,可以处理每秒300次插入更多.我使用亚马逊EC2小实例,亚马逊Linux.

top - 18:27:06 up 3 days,  1:43,  2 users,  load average: 4.40, 5.39, 5.76
Tasks: 178 total,   4 running, 174 sleeping,   0 stopped,   0 zombie
Cpu(s): 24.6%us, 13.4%sy,  0.0%ni,  0.0%id,  1.1%wa,  0.0%hi,  4.9%si, 56.0%st
Mem:   1717480k total,  1640912k used,    76568k free,   193364k buffers
Swap:   917500k total,     5928k used,   911572k free,   824136k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7677 mysql     20   0  313m 153m 6124 S 39.0  9.2 393:49.11 mysqld
16529 nginx …
Run Code Online (Sandbox Code Playgroud)

php mysql insert nginx cpu-usage

7
推荐指数
1
解决办法
4922
查看次数

getmyfreetraffic重定向已接管我的网站

我的Wordpress网站已被黑客入侵。我注意到该网站已重定向到“ getmyfreetraffic.com”。我注意到,即使是Wordpress管理员登录页面也被重定向到getmyfreetraffic.com,如下图所示。

有什么办法可以解决此黑客问题,以及该黑客最初如何能够访问我的网站?

这是当我尝试登录到wordpress管理门户时发生的情况 getmyfreetraffic

更新

此黑客是由于Easy WP SMTP紧急零日问题导致的安全问题引起的。

php security wordpress redirect

6
推荐指数
2
解决办法
2557
查看次数

如何使用nginx读取和操作POST请求变量?

我正在使用nginx(v1.4.1)代理外部服务,但希望能够POST在代理之前检查并可能修改请求的主体.问题是,我无法POST通过$request_body变量或其他方式在处理请求时访问请求体.

我已经阅读了很多帖子和SO问题,并且已经实现了这个建议的策略,该策略旨在允许记录POST正文(当使用proxy_pass指令时).然而,虽然这对我有用,但我仍然无法$request_body在处理请求期间阅读任何内容.

为清楚起见,这是我配置的相关部分:

location /proxy-this/ {
    client_max_body_size 8k;
    client_body_buffer_size 16k;
    client_body_in_single_buffer on;
    proxy_pass https://example.com/external-endpoint/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_set_header Content-Length '';
}
Run Code Online (Sandbox Code Playgroud)

而我希望能够做到的:

location /proxy-this/ {
    ... (same configuration as above) ...
    set $request_body $request_body&extra_param=1;
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能是使用nginx_lua模块,并看了看HttpFormInputModule,但第一个似乎矫枉过正,后者一段时间没有更新.

nginx

5
推荐指数
2
解决办法
5311
查看次数

如何使用 Node.js 中的请求库获取原始 HTTP 消息正文?

NPM-请求库允许我建立HTTP使用一个很好的JSON风格的语法要求,是这样的。

request.post(
    {
        url: 'https://my.own.service/api/route',
        formData: {
            firstName: 'John',
            lastName: 'Smith'
        }
    },
    (err, response, body) => {
        console.log(body)
    }
);
Run Code Online (Sandbox Code Playgroud)

但是为了排除故障,我真的需要查看请求的 HTTP 消息正文,因为它会出现在线路上。理想情况下,我正在寻找带有 Node.jsBuffer对象的原始字节表示。似乎很容易得到这个响应,但不是请求。我对multipart/form-data.

我查看了文档和 GitHub 问题,但无法弄清楚。

javascript http node.js npm-request

5
推荐指数
2
解决办法
3408
查看次数

如何让Unicorn在开发日志中显示帖子参数?

我刚开始尝试使用Unicorn(超薄),到目前为止,我确实喜欢输出的格式,除了它似乎没有显示各种请求的post参数.我真的很喜欢这个功能来帮助调试表单等....

独角兽:

20:26:14 web.1     | 127.0.0.1 - - [17/Jan/2012 20:26:14] "POST /basic_simulations HTTP/1.1" 422 24259 0.4838
Run Code Online (Sandbox Code Playgroud)

我想要的......(这是来自webrick):

Started POST "/basic_simulations" for 127.0.0.1 at 2012-01-17 20:27:22 -0700
Processing by BasicSimulationsController#create as HTML
Parameters: {"utf8"=>"?",
"authenticity_token"=>"xxxxx", "basic_simulation"=>{"x1706"=>"1"}, "commit"=>"Submit my answers"}
Run Code Online (Sandbox Code Playgroud)

是否有一些配置选项或类似的东西我可以打开此功能?谢谢!

ruby logging webserver ruby-on-rails unicorn

4
推荐指数
1
解决办法
2053
查看次数

如何从 nginx docker 镜像记录 http 请求正文?

我有一个带有 nginx 的 docker 镜像。

我想记录传入的请求。

我的 docker-compose 文件:

nginx:
  container_name: my-nginx
image: nginx
ports:
  - "80:80"
  - "443:443"
volumes:
  - ./nginx.conf:/etc/nginx/conf.d/default.conf
  - ./access.log:/var/log/nginx/test.com.access.log
Run Code Online (Sandbox Code Playgroud)

我的 nginx 配置:

server {
 listen 80;
 listen 443 default_server ssl;
 access_log /var/log/nginx/test.com.access.log;

 location / {
  proxy_pass http://myapp:8080;
  proxy_buffering off;
 }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试access_log用以下配置替换指令时:

log_format testlog '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $bytes_sent '
                   '"$http_referer" "$http_user_agent" "$request_body"';
access_log /var/log/nginx/test.com.access.log testlog;
Run Code Online (Sandbox Code Playgroud)

我越来越:

nginx-reverse-proxy | 2018/04/06 11:50:00 [emerg] 1#1: "log_format" directive is not allowed here in …
Run Code Online (Sandbox Code Playgroud)

logging http nginx docker

3
推荐指数
1
解决办法
1万
查看次数