Hi Ahmed I am a little confused here. I was using NGINX and uwsgi.  Now 
based on your response i decided to use Daphne.. So Now I have NGINX with 
Daphne. I am not sure where gunicorn fits in here . I am following this 
<http://masnun.rocks/2016/09/25/introduction-to-django-channels/> tutorial. 
Essentially now I am getting a 502 Bad gateway when accessing my website.

This is the nginx configuration I have

server {
    # the port your site will be served on
    listen      80;
    server_name .MyDomain.com;
    charset     utf-8;


    # max upload size
    client_max_body_size 75M;   # adjust to taste


    # Django media
    location /media  {
        # your Django project's media files - amend as required
        alias /home/ec2-user/MyDomainVenv/MyDomainWeb/media;
    }


    location /static {
        # your Django project's static files - amend as required
        alias /home/ec2-user/MyDomainVenv/MyDomainWeb/static;
    }




        location / {
            proxy_pass http://0.0.0.0:8001;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";


            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;
        }
}

any suggestions on what might be going wrong ? I tried accessing my website 
and this is what i got

==> /var/log/nginx/error.log <==
2019/03/23 07:13:21 [error] 22191#0: *4 connect() failed (111: Connection 
refused) while connecting to upstream, client: 71.231.182.18, server: 
MyDomain.com, request: "GET /admin/ HTTP/1.1", upstream: 
"http://0.0.0.0:8001/admin/";, host: "www.MyDomain.com"


==> /var/log/nginx/access.log <==
71.231.182.18 - - [23/Mar/2019:07:13:21 +0000] "GET /admin/ HTTP/1.1" 502 
575 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" "-"





On Friday, March 22, 2019 at 10:31:08 PM UTC-7, Ahmed Ishtiaque wrote:
>
> Aldian has pointed it out already, but I also use Nginx + gunicorn + 
> daphne for my production server. Nginx decides when to upgrade a request to 
> wss:// and passes it on to my daphne instance to handle automatically. 
> Would be happy to share my config for that if you want.
>
> Best,
> Ahmed
>
> On Fri, Mar 22, 2019 at 10:15 PM Aldian Fazrihady <mob...@aldian.net 
> <javascript:>> wrote:
>
>> Does it really use Django channels?  I am using Django channels and 
>> following its suggested package:  ASGI provided by Daphne
>>
>> Regards, 
>>
>> Aldian Fazrihady
>>
>> On Sat, 23 Mar 2019, 07:58 Adam Zedan, <zeda...@gmail.com <javascript:>> 
>> wrote:
>>
>>> I am currently using Django channels for websocket communication. I read 
>>> this 
>>> <https://django-websocket-redis.readthedocs.io/en/latest/running.html#django-with-websockets-for-redis-behind-nginx-using-uwsgi>
>>>  article 
>>> and it states that I should split the project into two uwsgi instances. It 
>>> states that
>>>
>>> "The web server undertakes the task of dispatching normal requests to 
>>>> one uWSGI instance and WebSocket requests to another one"
>>>
>>>
>>> Now I have two uwsgi instances running. This is how I am running both.
>>>
>>> This uwsgi handles the normal django site requests
>>> uwsgi --virtualenv /home/ec2-user/MyProjVenv --socket /home/ec2-user/
>>> MyProjVenv/MyProjWeb/site1.socket --chmod-socket=777 --buffer-size=32768 
>>> --workers=5 --master --module main.wsgi
>>>
>>>
>>> This uwsgi handles the websocket requests
>>> uwsgi --virtualenv /home/ec2-user/MyProjVenv --http-socket /home/ec2-
>>> user/MyProjVenv/MyProjWeb/web.socket --gevent 1000 --http-websockets --
>>> workers=2 --master --chmod-socket=777  --module main.wsgi_websocket
>>>
>>> Now the websocket uwsgi launches  main.wsgi_websocket
>>>
>>> The code for main.wsgi_websocket one is this
>>> import os
>>> import gevent.socket
>>> import redis.connection
>>> redis.connection.socket = gevent.socket
>>> os.environ.update(DJANGO_SETTINGS_MODULE='main.settings')
>>> from ws4redis.uwsgi_runserver import uWSGIWebsocketServer
>>> application = uWSGIWebsocketServer()
>>>
>>> Now after spinning up the two uwsgi instances I am able to access the 
>>> website.The websocket uwsgi instance is also receiving data however I am 
>>> not sure if its passing that data to the website uwsgi instance. I am using 
>>> Django Channels here and this is the configuration I have specified in my 
>>> settings for Django Channels
>>>
>>> CHANNEL_LAYERS = {
>>>     "default": {
>>>         "BACKEND": "asgi_redis.RedisChannelLayer",
>>>         "CONFIG": {
>>>             "hosts": [(redis_host, 6379)],
>>>         },
>>>        "ROUTING": "main.routing.channel_routing", 
>>>     },
>>> }
>>>
>>> The channel routing is this
>>> channel_routing = [
>>>     include("chat.routing.websocket_routing", path=r"^/chat/stream"),
>>>     include("chat.routing.custom_routing"),
>>> ]
>>>
>>> and this is the websocket_routing which i have mentioned above
>>>
>>>
>>>
>>> websocket_routing = [
>>>     route("websocket.connect", ws_connect),
>>>
>>>
>>>     # Called when WebSockets get sent a data frame
>>>     route("websocket.receive", ws_receive),
>>>
>>>
>>>     # Called when WebSockets disconnect
>>>     route("websocket.disconnect", ws_disconnect),
>>> ]
>>>
>>> Now the problem is that my ws_receive is never called. If I test on my 
>>> local dev machine using  "*ipaddress:8000/chat/stream*" this works 
>>> perfectly fine however I have no clue why my receive is not being called 
>>> when I use *ipadress:80/ws/ *. I am certain that my other uwsgi 
>>> instance is getting that data but I dont know how to find out if its 
>>> passing it to the other uwsgi instance of the djnago side and if it is then 
>>> why is my receive not being called ?. Any suggestions on this would 
>>> definitely help
>>>
>>>
>>>
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to django-users...@googlegroups.com <javascript:>.
>>> To post to this group, send email to django...@googlegroups.com 
>>> <javascript:>.
>>> Visit this group at https://groups.google.com/group/django-users.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/django-users/4c4e57fa-c603-4be0-ba1a-cf1e9919fc09%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/django-users/4c4e57fa-c603-4be0-ba1a-cf1e9919fc09%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to django-users...@googlegroups.com <javascript:>.
>> To post to this group, send email to django...@googlegroups.com 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/CAN7EoAZ3eoAW8XBKjBP5W11%2BxpOmQFPZt9t86fSWNR8twQ7QRA%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/django-users/CAN7EoAZ3eoAW8XBKjBP5W11%2BxpOmQFPZt9t86fSWNR8twQ7QRA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/ce2ff4cc-1358-49f9-bbb8-e5d1a4ddc223%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to