Articles of sockets

Nginx无法find与Unicorn的unix套接字文件

我已经检查了应用程序,并且一切接缝都没问题(代码configuration明智的应用程序),也是服务器,数据库都可以,在日志中我得到了这个错误,我已经看了这个Nginx无法find与Unicorn的Unix套接字文件(没有这样的文件或目录),但我真的不知道从哪里开始,以实现“只需修改你的Unicornconfiguration文件中的listenvariables。例如:listen”/var/sockets/unicorn.[app name] .sock“ ,然后configurationNginx代理服务器到服务器的所有连接,例如server unix:/ var / sockets / unicorn [app name] .sock fail_timeout = 0; 如果有人可以请指点我在如何做到这一点的方向,这将是伟大的。 我改变了文件,但卡住在相同的错误,miconfiguration文件(我已经删除部分文件confidenciality的原因): root = "" working_directory root pid "#{root}/tmp/pids/unicorn.pid" stderr_path "#{root}/log/unicorn.log" stdout_path "#{root}/log/unicorn.log" listen "/var/sockets/unicorn.camicase.sock" worker_processes 2 timeout 30 和ngixconfiguration upstream unicorn { server unix:/var/sockets/unicorn.camicase.sock fail_timeout=0; } server { listen 80; server_name _; rewrite ^ https://$host$request_uri? permanent; } server […]

wsgi nginx错误:连接上游时拒绝了权限

关于这个似乎有很多StackOverflow的问题,但不幸的是,没有任何工作对我来说。 我在nginx上得到了一个502错误的网关,以及日志中的以下内容: connect() to …myproject.sock failed (13: Permission denied) while connecting to upstream 我正在ubuntu上运行wsgi和nginx ,我一直在关注Digital Ocean的这个指南 。 我明显从uwsgi -s myproject.sock –http 0.0.0.0:8000 –module app –callable app工作正确configurationwsgi ,但我不断得到nginx权限被拒绝的错误,我不知道为什么: 在遇到这个问题和另一个 问题之后,我改变了.ini文件,并添加了chown-socket , chmod-socket , uid和gid参数(也试过只是设置前两个,或者和一些不同的权限设置 – 即使是最宽容的没有工作)。 这一个看起来很有前途 ,但我不相信selinux是安装在我的Ubuntu(运行sudo apt-get remove selinux给出“包'selinux'没有安装,所以不能删除”,并find / -name "selinux"不显示任何东西)。 以防万一,我尝试了这个post推荐的。 卸载apparmor ( sudo apt-get install apparmor )也没有工作。 每当我做出改变,我运行sudo service nginx restart […]

Websocket代理传递给不同的路由

我试图在不同的位置设置不同的socket.io服务器,例如: socket.yourdomain.com/app1 socket.yourdomain.com/app2 exectra … 该子域使用有效的SSL证书进行保护,而不是自签名。 nginx vhost server { listen 443; ssl on; ssl_certificate /etc/nginx/ssl/some_cert_chain.crt; ssl_certificate_key /etc/nginx/ssl/somekey.key; server_name socket.yourdomain.com; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_pass http://127.0.0.1:1340/; } location /app1/ { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_pass http://127.0.0.1:1340/; } location […]

当连接到上游时,套接字/ puma.sock失败(2:没有这样的文件或目录)

我使用puma和nginxconfiguration我的Rails应用程序,但在运行时出现以下exception: *9 connect() to unix:/home/nikhil/rorworkspace/DrinkApp/shared/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /drinks HTTP/1.1", upstream: "http://unix:/home/nikhil/rorworkspace/DrinkApp/shared/sockets/puma.sock:/drinks", host: "localhost"

混合内容:https上的页面通过https加载,但请求不安全

我正在使用Nginx + flask-socketio + aws elb,并且在https上加载URL时,我收到以下与Nginx和套接字相关的错误消息,请帮助解决此问题, socket.io.min.js:2 Mixed Content: The page at 'https://localhost/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://localhost/socket.io/1/?t=1477375737508'. This request has been blocked; the content must be served over HTTPS.d.handshake @ socket.io.min.js:2 socket.io.min.js:2 XMLHttpRequest cannot load http://localhost/socket.io/1/?t=1477375737508. Failed to start loading.

部署多个Rails应用程序到DigitalOcean

我正在使用数字海洋液滴的轨道应用程序。 我已经成功地部署了第一个应用程序,但现在面临着部署第二个应用程序的问题。 我使用独angular兽作为应用程序服务器和Nginx作为Web服务器。 操作系统是Ubuntu 14.04 我已经在stackexchange网站上阅读了大量的post,也在博客等,但没有一个符合我的立场。 问题是,我认为,应用程序和系统文件夹/文件/configuration结构。 我非常谨慎地改变系统configuration文件上的任何东西。 在网上的大多数例子中,每个人都在谈论unicorn.rb内rails_root/config/但我没有任何。 相反,我有unicorn.conf里面有相同的内容/etc etc。 还有一个套接字文件侦听第一个应用程序,我尝试了两个为我的第二个应用程序创build第二个 – 但它失败了。 我知道,我必须为第二个应用程序创build另一个独angular兽configuration,并且还必须做一些事情,这应该是第二个创build一个套接字的结果。 但是缺乏对系统pipe理的了解和理解,使我陷入困境。 任何人都可以指导我这个问题? 如果需要,我可以提供更多的文件。 第一个应用程序的nginxconfiguration文件(path/etc/sites-available/first_app )。 upstream app_server { server unix:/var/run/unicorn.sock fail_timeout=0; } server { listen 80; root /home/rails/myfirstapp/public; server_name www.myfirstapp.com; index index.htm index.html index.php index.asp index.aspx index.cgi index.pl index.jsp; location / { try_files $uri/index.html $uri.html $uri @app; } location ~* […]

boost asio套接字不断popup/ proc / pid / fd下

我肯定套接字在我的应用程序中到处都是封闭的,并且我一直在我的/ proc / pid / fd /下得到这个新创build的fd /套接字文件,这是正常的。 我确定它不是。 connection.cpp connection::start() { socket_.set_option(boost::asio::ip::tcp::no_delay(true)); boost::asio::socket_base::non_blocking_io command(true); socket_.io_control(command); read_header(); longevity_timer_.start(); // log_->debugStream() << "listening"; } void connection::stop() { cancel_timeout(); boost::system::error_code ignored_ec; // initiate graceful connection closure & stop all asynchronous ops try { socket_.cancel(); socket_.shutdown(boost::asio::ip::tcp::socket::shutdown_both, ignored_ec); if (ignored_ec) { log_->errorStream() << "shutdown: bad socket; couldn't close cleanly" […]

使用本地主机或给定DNS服务器上的套接字发送反向DNS请求

我正在尝试获取IPV4地址的反向DNS结果。 通过挖掘它很简单,通过dig -x 1.2.3.4 。 但是我必须在Linux C环境下使用套接字来获得相同的结果。 最终,我应该在recv*函数中获得权限的启动。 我试图通过更改IP 1.2.3.4到4.3.2.1.in-addr.arpa这个在缓冲区中发送到DNS服务器的套接字。 首先我做了简单的DNS,我得到了正确的DNS响应(与dig foobar.com相同)。 我认为我的主要麻烦是在dig -x 1.2.3.4发送-x ,因为dig foobar.com我可以做的事情…

如何获得IP ID,SEQ ID,ACK ID在Python的TCP套接字?

Linux中的Python套接字(bsd套接字) import socket s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('www.google.com', 80)) s.send('GET / HTTP/1.1\r\n\r\n') s.recv(1024) 是否有可能获得当前对象的IP ID,SEQ ID,ACK ID? 最好的,如果不是正常的tcp socket内部篡改太多。 如果跟踪可以实时工作,最好。 用原始数据包replace正常的AF_INE / SOCK_STREAM是效率低下的,因为你必须在用户空间中重新实现整个TCP堆栈。 问题的目的是我添加诊断代码,将附加到一个现有的项目,他们广泛使用普通的TCP套接字。 我试图使用AF_PACKET来捕获原始的传入和传出数据包,但感觉真的很丑陋。 此外,如果multithreading套接字在TCP中同时发送相同请求,则由于元组(srcip,srcport,dstip,dstport,proto_num)都是相同的,因此不能分辨哪个捕获的数据包属于哪个。 问一个问题的另一种方法是如何在Linux上将数据包stream元组(srcip,srcport,dstip,dstport,proto_num)标记为inode / fd? 这可能吗? 也许使用netlink ? 我相信有一个seq / ack id inode表可以暴露在内核的某个地方。 在Ubuntu 12.04 LTS + python 2.7下当然有root了。

rawsocket sendto()的一些数据包被丢弃,在networking中看不到

socketFd_ = socket(AF_INET, SOCK_RAW, protoType); sentBytes = sendto(socketFd_, buf, len, 0, (struct sockaddr *)&sa,sizeof(structsockaddr_in)); protoType = GRE 我正在networking中发送1000个数据包。 如果我的tx数据包速率是40,我能看到wireshark中的所有数据包。 然而,当我将尝试以100的速率发送一些数据包(3-4)不会在networking中达成,但sendto没有返回任何错误。 我知道sendto只是把txpacket放入队列中,不能保证在networking中传送数据包,但是从那里我可以得到丢包的统计数据和内核丢包的原因。 我曾尝试增加界面的txqueuelen到65000,但它没有帮助。 我怎么能debugging这个问题?