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 <[email protected] 
> <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, <[email protected] <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 [email protected] <javascript:>.
>>> To post to this group, send email to [email protected] 
>>> <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 [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <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 [email protected].
To post to this group, send email to [email protected].
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