Articles of curl

用`-k`curl并且不用`-k`

当我打开一个URL使用curl 没有 -k ,我的请求传递,我能够看到预期的结果。 $ curl -vvv https://MYHOSTNAME/wex/archive.info -A SUKU$RANDOM * Trying 10.38.202.192… * Connected to MYHOSTNAME (10.38.202.192) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: *.MYCNAME * Server certificate: ProdIssuedCA1 * Server certificate: InternalRootCA > GET /wex/archive.info HTTP/1.1 > Host: MYHOSTNAME > User-Agent: SUKU19816 > Accept: */* > < HTTP/1.1 […]

某些网站的cURL超时,在其他网站上完美工作

我试图获取博客的源代码。 如果我尝试从PHP或从命令行没关系。 两个超时。 还尝试过get_file_contents(),但同样的问题 问题 当我尝试这个命令: curl http://blogg.se -m 5 –verbose 我得到这个: * About to connect() to blogg.se port 80 (#0) * Trying 82.96.60.8… connected > GET / HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: blogg.se > Accept: */* > * Operation timed out after 5001 milliseconds with 0 bytes […]

nginx转发代理 – 失败(24:打开的文件太多),

我使用php curl和nginx作为代理。 这里是我的代码: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $curl_scraped_page = curl_exec($ch); curl_close($ch); echo $curl_scraped_page; 经过一段时间,运行nginx的负载非常慢,有时它返回错误500。 日志说 失败(24:打开的文件过多), 一些更多的细节: root@proxy-s2:~# ulimit -Hn 4096 root@proxy-s2:~# ulimit -Sn 1024 服务器上没有其他的脚本在运行,也没有其他脚本正在使用这个代理。 这是Nginx的错误? 如何解决? 要么 还有什么呢? 如何解决? 我没有改变默认的nginxconfiguration Nginx的重启解决了这个问题(暂时我猜) 这里是我的nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; […]

Curl不能在Nginx和localhost上使用PHP

当我通过SSL(通过WPN-XM在Windows上运行nginx 1.9.4)将本地PHP脚本的Curl请求发送到本地服务器时,浏览器将“等待”,直到出现504错误。 PHP-fpm可能已经死了,因为Web服务器不能处理任何其他的请求。 当我发送相同的请求到生产服务器它正常工作。 当我从命令行发送Curl请求时,它就起作用了。 当我打开网页浏览器的最终资源,然后它的作品。 我花了4个小时用GooglesearchStac Owerflow,但没有发现像我这样的其他情况。 谢谢! <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://webserver.local/resource"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // just on local curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // just on local curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $content); $response = curl_exec($ch);

Nginx WebSocket代理不断获得HTTP 301redirect

我一直试图让Nginx的WebSocket代理在过去的几天工作,但对我来说,我无法得到它的工作。 我遵循这里的官方指南,并使用Python的websockets模块作为服务器,并使用npm包作为客户端。 从wscat直接连接到Python WebSocket后端工作正常(从浏览器连接也是如此)。 但是,只要我在Nginx中进行分层,它就不能正常工作,并继续给我一个标准的HTTP 301redirect。 使用Nginx代理的cURLdebugging输出: $ curl 'http://test.ws:8080/websocket' \ > -H 'Pragma: no-cache' \ > -H 'Origin: http://localhost:8080' \ > -H 'Accept-Encoding: gzip, deflate, sdch' \ > -H 'Sec-WebSocket-Version: 13' \ > -H 'Sec-WebSocket-Key: V15bszpaQ+8Vq7mWR6NQbQ==' \ > -H 'User-Agent: Mozilla/5.0' \ > -H 'Upgrade: websocket' \ > -H 'Cache-Control: no-cache' \ > -H […]

parsingnginx访问日志并提取IP,检测每个parsing的IP的地理位置

我有问题parsingnginx访问日志, 在这段代码中有错误<<< grep "pagename" <<< "$line0" 不工作grep "pagename" while IFS= read -r line0 do ipList=$( grep -oP '\b(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))\b' <<< grep "pagename" <<< "$line0") for oneIP in $ipList do curl -s "http://ipinfo.io/$oneIP" done done < /var/log/nginx/access.log 谢谢。

PHP的持久性连接不重用(打开多个连接每个FPM工作人员)

我在testing从php到mysql的持续连接时遇到了一个非常奇怪的行为。 我有一个如下所示的小脚本: <?php $db = new mysqli('p:db-host','user','pass','schema'); $res = $db->query('select * from users limit 1'); print_r($res->fetch_assoc()); 我的设置是: 操作系统:CentOS 7.3 PHP / 7.1.18 PHP-FPM nginx的/ 1.10.2 MySQL的,30年6月5日 我试图用ab做一些请求: $ ab -c 100 -n 500 http://mysite/my_test_script.php PHP-FPM被configuration为有150名员工准备好了,我看到了我期待的150个与mysqlbuild立了连接,并在ab完成后保持打开状态。 我再次启动了ab,行为仍然是相同的,150个连接,没有新的连接打开。 一切都好。 然后我创build了一个脚本,做了相同的确切请求,相同的IP,相同的HTTP头,但用curl来作出请求,BOOM我有300个连接在mysql而不是150.我再次启动脚本,我还有300连接。 相同脚本的后续运行不会增加连接数量。 有没有人遇到过这样的事情? 有谁知道什么可以使PHP打开更多的连接比需要? 我错过了什么明显的? 如果不清楚我在问什么,请在下面评论,我会尽量改善我的解释问题。 PS我也试过这与PDO,同样的行为。 编辑:我的testing哪里不准确 进一步testing后,我注意到我的第一个testing不准确。 我在一个多租户环境和不同的连接(不同的架构),当我启动ab时初始化。 在我的情况下,PHP的文档有点误导,它说: PHP检查是否已经有一个完全相同的持久连接(从前面保持打开状态),如果存在,就使用它。 如果不存在,则创build链接。 一个“相同的”连接是一个连接,打开同一个主机,具有相同的用户名和相同的密码(如适用)。 http://php.net/manual/en/features.persistent-connections.php 也许它对我来说很明显,我不知道,这不适合我。 将第四个parameter passing给mysqli使得php认为连接不完全相同 […]

使用s_client访问带有客户端证书但不curl的服务器?

我正在使用客户端证书身份validation我的Web服务器的nginx。 configuration的相关部分是: ssl_certificate /usr/local/etc/nginx/certs/ssl.crt; ssl_certificate_key /usr/local/etc/nginx/certs/ssl.key; ssl_client_certificate /usr/local/etc/nginx/certs/server_chain.crt; ssl_verify_client on; ssl_verify_depth 2; 客户端证书由另一台具有根CA证书的服务器签名。 也就是说,我想接受拥有证书链的客户,如下所示: CA -> intermediate CA -> client 所以文件server_chain.crt是由: cat intermediate_ca.crt root_ca.crt > server_chain.crt 现在,我可以通过发出命令来成功访问服务器: openssl s_client -connect localhost:443 -tls1 -cert client.crt \ -key client.key -CApath root_ca.crt -state -debug` 然后inputGET /api 但是,如果我尝试使用以下方法达到相同的服务: curl -v -s -k –key client.key –cert client.crt https://localhost/api 我得到: <html> […]

jenkins与反向代理替代端口号

我有一个jenkinsbuild设者服务器,我试图用nginx设置反向代理。 我遵循jenkins站点的所有howto和文档,唯一不同的是我需要服务器可以在不同的端口上访问,然后是标准的https端口。 服务器必须可以在https://jenkins.example.com:9090这是现在工作,但我仍然有一些问题。 在pipe理jenkins,我不断收到消息 看来您的反向代理设置已损坏 另外当我login或申请或保存一些configuration更改我不断的redirect到https://jenkins.example.com没有端口号。 当我检查curl,并在一些页面的标题看它不断设置位置标题正确的url,但没有端口号。 我在nginx中有以下configuration server { listen 443 ssl spdy; server_name jenkins.example.com; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"; add_header X-Frame-Options "DENY"; ssl on; ssl_certificate /etc/nginx/ssl/server.chain.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-$ ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits ssl_dhparam /etc/nginx/ssl/dhparam.pem; # enable ocsp stapling […]

cURL不尊重密码

我想用cURL来testing某些密码的用法,但是它似乎并不尊重这个选项: curl -vvv –tlsv1.0 –ciphers 'RC4-SHA' https://my.url.com/alive * Hostname was NOT found in DNS cache * Trying ip… * Connected to my.url.com (ip) port 443 (#0) * TLS 1.0 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA * Server certificate: *.url.com * Server certificate: DigiCert SHA2 Secure Server CA * Server certificate: DigiCert Global Root CA > GET /alive HTTP/1.1 […]