I am trying to deploy a django website on aws EC2 instance with Nginx. I am getting the following error.
*1 connect() failed (111: Connection refused) while connecting to upstream, client: **.***.***.***, , server: **.**.***.*, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "*.amazonaws.com"
In /etc/nginx/sites-available folder I have a file with the following configurations
server{
listen 80;
server_name your_public_ip;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/mySiteFolder;
}
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
}
Where is the mistake that I am committing? Thank you in advance.
I've setup the one click install django on digitalocean and added a domain to it. I'm also trying to add a sub domain before the site goes live. I've edited the nginx conf file as below
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
client_max_body_size 4G;
server_name beta.kazi-connect.com;
keepalive_timeout 5;
# Your Django project's media files - amend as required
location /media {
alias /home/django/django_project/django_project/media;
}
# your Django project's static files - amend as required
location /static {
alias /home/django/django_project/django_project/static;
}
# Proxy the static assests for the Django Admin panel
location /static/admin {
alias /usr/lib/python2.7/dist-packages/django/contrib/admin/static/admin/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_buffering off;
proxy_pass http://app_server;
}
}
upstream app_server {
server unix:/home/django/gunicorn.socket fail_timeout=0;
}
and restarted both nginx and gunicorn however when I visit the sub domain I get a 502 bad gateway error.
Nginx log states there's an issue with gunicorn.
2017/01/24 16:24:19 [error] 6258#6258: *2 upstream prematurely closed connection while reading response header from upstream, client: 105.230.203.101, server: beta.kazi-connect.com, request: "GET / HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/", host: "beta.kazi-connect.com"
2017/01/24 16:24:20 [error] 6258#6258: *2 upstream prematurely closed connection while reading response header from upstream, client: 105.230.203.101, server: beta.kazi-connect.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/favicon.ico", host: "beta.kazi-connect.com", referrer: "http://beta.kazi-connect.com/"
2017/01/24 16:24:22 [error] 6258#6258: *2 upstream prematurely closed connection while reading response header from upstream, client: 105.230.203.101, server: beta.kazi-connect.com, request: "GET / HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/", host: "beta.kazi-connect.com"
2017/01/24 16:24:23 [error] 6258#6258: *2 upstream prematurely closed connection while reading response header from upstream, client: 105.230.203.101, server: beta.kazi-connect.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/favicon.ico", host: "beta.kazi-connect.com", referrer: "http://beta.kazi-connect.com/"
2017/01/24 16:25:00 [error] 6258#6258: *23 upstream prematurely closed connection while reading response header from upstream, client: 105.230.203.101, server: beta.kazi-connect.com, request: "GET / HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/", host: "beta.kazi-connect.com"
2017/01/24 16:25:01 [error] 6258#6258: *23 upstream prematurely closed connection while reading response header from upstream, client: 105.230.203.101, server: beta.kazi-connect.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://unix:/home/django/gunicorn.socket:/favicon.ico", host: "beta.kazi-connect.com", referrer: "http://beta.kazi-connect.com/"
Samuel's answer was right. The problem is that the domain names are not included in the ALLOWED_HOSTS. In the django_project/settings.py, search for the code below.
# Discover our IP address
ALLOWED_HOSTS = ip_addresses()
Add your domain name to ALLOWED_HOSTS, e.g.
ALLOWED_HOSTS.extend(["xyz.com"])
trying to set up django with gunicorn and nginx, getting some weird errors from nginx:
2015/10/07 06:17:22 [error] 28817#0: *12 connect() to
unix:/home/david/StockSearch/stocksearch/stocksearch.sock failed (111: Connection refused) while connecting to upstream,
client:79.176.114.181, server: 128.199.36.78, request: "GET / HTTP/1.1",
upstream: "http://unix:/home/david/StockSearch/stocksearch/stocksearch.sock:/",
host: "128.199.36.78" 2015/10/07 06:17:24 [error] 28817#0: *12 recv()
failed (104: Connection reset by peer) while reading response header from upstream,
client: 79.176.114.181, server: 128.199.36.78, request: "GET / HTTP/1.1",
upstream: "http://unix:/home/david/StockSearch/stocksearch/stocksearch.sock:/",
host: "128.199.36.78"
nginx config:
server {
listen 80;
server_name 128.199.36.78;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/david/StockSearch/stocksearch;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/david/StockSearch/stocksearch/stocksearch.sock;
}
}
gunicorn config:
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid david
setgid www-data
chdir /home/david/StockSearch/stocksearch
exec /home/david/Env/ssenv/bin/gunicorn --workers 3 --bind unix:/home/david/StockSearch/stocksearch/stocksearch.sock stocksearch.wsgi:application
I'm very new to nginx and gunicorn, but i think you can't do that:
proxy_pass http://unix:/home/david/StockSearch/stocksearch/stocksearch.sock;
this is achived with fastCGI not with proxypass:
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
astcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
I can tell how i configure my nginx and gunicorn in my server, i hope my configuration helps:
server {
server_name XX.XX.XX.XX;
access_log /webapps/Project/log/acces.log;
error_log /webapps/Project/log/error.log warn;
location /static/ {
root /webapps/Project;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM N$
}
}
then i start my gunicorn server in my local machine like:
gunicorn Project.wsgi:application --bind 127.0.0.1:8001
I am new to Nginx and was trying to use nginx and thin.
I have tried out many sites and blogs but it is not helping.I am currently following the blog
http://articles.slicehost.com/2008/5/27/ubuntu-hardy-nginx-rails-and-thin
I am however getting an 502 Bad gateway error.
The below is the code I have implemented .
nginx conf file:-
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
nginx default file(/etc/nginx/site-available):-
# You may add here your
# server {
# ...
# }
# statements for each of your virtual hosts to this file
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##
server {
listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name 192.168.1.238:8080;
root /home/woi/Development/public;
index index.html index.htm;
# Make site accessible from http://localhost/
# server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
# Only for nginx-naxsi : process denied requests
#location /RequestDenied {
# For example, return an error code
#return 418;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /usr/share/nginx/www;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# root html;
# index index.html index.htm;
#
# location / {
# try_files $uri $uri/ /index.html;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
#
# root html;
# index index.html index.htm;
#
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
#
# ssl_session_timeout 5m;
#
# ssl_protocols SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
# ssl_prefer_server_ciphers on;
#
# location / {
# try_files $uri $uri/ /index.html;
# }
#}
nginx domain.com file(/etc/nginx/sites-available):-
upstream domain1 {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
server_name 192.168.1.238;
# access_log /home/demo/public_html/railsapp/log/access.log;
# error_log /home/demo/public_html/railsapp/log/error.log;
root /home/woi/Development/public/;
index index.html;
location / {
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_redirect off;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://domain1;
break;
}
}
}
After putting services nginx start command,I am not able to run thin server.I am getting 502 bad gateway error when i hit my ip address 192.168.1.238.
Update:-The below is the snippet of my error log:-
"GET / HTTP/1.1", upstream: "http://domain1/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3002/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3001/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 no live upstreams while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://domain1/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3002/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3001/", host: "192.168.1.238"
2014/01/30 05:14:18 [error] 2029#0: *1 no live upstreams while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://domain1/", host: "192.168.1.238"
2014/01/30 05:16:24 [error] 2171#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3002/", host: "192.168.1.238"
2014/01/30 05:16:24 [error] 2171#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "192.168.1.238"
2014/01/30 05:16:24 [error] 2171#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3001/", host: "192.168.1.238"
2014/01/30 05:20:04 [error] 2354#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3002/", host: "192.168.1.238"
2014/01/30 05:20:04 [error] 2354#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "192.168.1.238"
2014/01/30 05:20:04 [error] 2354#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3001/", host: "192.168.1.238"
2014/01/30 05:20:09 [error] 2354#0: *1 no live upstreams while connecting to upstream, client: 192.168.1.142, server: 192.168.1.238, request: "GET / HTTP/1.1", upstream: "http://domain1/", host: "192.168.1.238"
The above solution is not helping me.Can someone please help me.
Am stuck for a long time now.
Thanks
This means that your Thin servers are not running. Try this:
curl -v http://localhost:3000
It is probably not working. Look at your Thin logs (stdout/stderr.log) to identify further problems.
Thin is a separate process and it should be restarted individually. It is common to have it setup within your Rails app in the same bundle. In that case you need to run it like:
bundle exec thin start
See: http://code.macournoyer.com/thin/usage/
If you installed your Gems as root including the thin gem, then it should have installed an init script in /etc/init.d. In that case you can restart thin with the service command.
When you deploy new code, you only need to restart your thin servers and not nginx.
I have an application running nginx,django 1.5, gunicorn.
Scenario 1
When I load my application one time - it will show the page file with an underlying 200 HTTP response.
Scenario 2
However, if I reload this same page right after, it will show my HTTP 500 Default, but custom page.
Scenario X
If I reload again, it either will show Scenario 1 or Scenario 2 upon subsequent page reloads.
I looked at my access.log for nginx and...
it is showing information like for the 500 error page:
[05/Oct/2013:03:26:07 +0000] "GET / HTTP/1.1" 500 460 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
[05/Oct/2013:03:21:19 +0000] "GET /static/img/templated/base/subnav_back.png HTTP/1.1" 304 0 "http://mydomain.com/static/css/base.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
it is showing information for a 200 HTTP response of:
[05/Oct/2013:03:18:25 +0000] "GET /static/img/templated/base/subnav_back.png HTTP/1.1" 200 7674 "http://mydomain.com/static/css/mysite_base.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"
nginx conf looks like:
server {
server_name ec2-X-X-X-X.compute-1.amazonaws.com;
access_log /home/ubuntu/virtualenv/mysite/error/access.log;
error_log /home/ubuntu/virtualenv/mysite/error/error.log warn;
connection_pool_size 2048;
root /home/ubuntu/virtualenv/mysite/homelaunch/;
location /static/ {
alias /home/ubuntu/virtualenv/mysite/homelaunch/static/;
#alias /static/;
#root /home/ubuntu/virtualenv/mysite/homelaunch/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Host $server_name;
#proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
error.log has:
2013/09/21 19:36:22 [error] 12680#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: XX.XXX.XX.XXX, server: ec2-x-x-x-x.compute-1.amazonaws.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8001/", host: "www.mysite.com", referrer: "http://www.mysite.com/dir/"