Adding an SSL (PORT 443) to an Nginx Reverse Proxy Server (PORT 80) - Nginx Config File
Using Ubuntu I generated an SSL using Certbot. This has automatically updated my Nginx configuration file and added an additional listening port. I'm concerned whether I only need to listen for one PORT (80 or 443) and not both, but I'm unable to find the relevant information on whether I need to remove the listening for PORT 80. Please see my configuration file below:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
Now that Certbot has added the code to a separate server block, do I need to remove where my initial server block listens at port 80? I had a problem with an old server crashing overnight whenever it was used and I feel it was something related to the Nginx config file that was similar to this.
Sorry if this question is stupid, I'm not very experienced with this and find it tremendously difficult, unfortunately. Thank you for any insight.
node.js ssl nginx reverse-proxy certbot
add a comment |
Using Ubuntu I generated an SSL using Certbot. This has automatically updated my Nginx configuration file and added an additional listening port. I'm concerned whether I only need to listen for one PORT (80 or 443) and not both, but I'm unable to find the relevant information on whether I need to remove the listening for PORT 80. Please see my configuration file below:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
Now that Certbot has added the code to a separate server block, do I need to remove where my initial server block listens at port 80? I had a problem with an old server crashing overnight whenever it was used and I feel it was something related to the Nginx config file that was similar to this.
Sorry if this question is stupid, I'm not very experienced with this and find it tremendously difficult, unfortunately. Thank you for any insight.
node.js ssl nginx reverse-proxy certbot
add a comment |
Using Ubuntu I generated an SSL using Certbot. This has automatically updated my Nginx configuration file and added an additional listening port. I'm concerned whether I only need to listen for one PORT (80 or 443) and not both, but I'm unable to find the relevant information on whether I need to remove the listening for PORT 80. Please see my configuration file below:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
Now that Certbot has added the code to a separate server block, do I need to remove where my initial server block listens at port 80? I had a problem with an old server crashing overnight whenever it was used and I feel it was something related to the Nginx config file that was similar to this.
Sorry if this question is stupid, I'm not very experienced with this and find it tremendously difficult, unfortunately. Thank you for any insight.
node.js ssl nginx reverse-proxy certbot
Using Ubuntu I generated an SSL using Certbot. This has automatically updated my Nginx configuration file and added an additional listening port. I'm concerned whether I only need to listen for one PORT (80 or 443) and not both, but I'm unable to find the relevant information on whether I need to remove the listening for PORT 80. Please see my configuration file below:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
Now that Certbot has added the code to a separate server block, do I need to remove where my initial server block listens at port 80? I had a problem with an old server crashing overnight whenever it was used and I feel it was something related to the Nginx config file that was similar to this.
Sorry if this question is stupid, I'm not very experienced with this and find it tremendously difficult, unfortunately. Thank you for any insight.
node.js ssl nginx reverse-proxy certbot
node.js ssl nginx reverse-proxy certbot
asked Nov 15 '18 at 14:38
MattMatt
8111
8111
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You did not include exactly what you wanted (e.g. which application should serve requests on which ports and what should be done with HTTP requests) but I shall assume that
- All port 80 requests are HTTP and all 443 requests are HTTPS.
- You want all HTTP requests to be redirected to HTTPS
- All HTTPS requests should be passed to node
If so, this is probably what you actually want:
server {
root /var/www/html;
server_name my.domain.co.uk;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
The first server block handles only HTTPS requests and passes all requests to node. The second server block handles only HTTP requests and redirects them to HTTPS.
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53321837%2fadding-an-ssl-port-443-to-an-nginx-reverse-proxy-server-port-80-nginx-conf%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You did not include exactly what you wanted (e.g. which application should serve requests on which ports and what should be done with HTTP requests) but I shall assume that
- All port 80 requests are HTTP and all 443 requests are HTTPS.
- You want all HTTP requests to be redirected to HTTPS
- All HTTPS requests should be passed to node
If so, this is probably what you actually want:
server {
root /var/www/html;
server_name my.domain.co.uk;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
The first server block handles only HTTPS requests and passes all requests to node. The second server block handles only HTTP requests and redirects them to HTTPS.
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
add a comment |
You did not include exactly what you wanted (e.g. which application should serve requests on which ports and what should be done with HTTP requests) but I shall assume that
- All port 80 requests are HTTP and all 443 requests are HTTPS.
- You want all HTTP requests to be redirected to HTTPS
- All HTTPS requests should be passed to node
If so, this is probably what you actually want:
server {
root /var/www/html;
server_name my.domain.co.uk;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
The first server block handles only HTTPS requests and passes all requests to node. The second server block handles only HTTP requests and redirects them to HTTPS.
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
add a comment |
You did not include exactly what you wanted (e.g. which application should serve requests on which ports and what should be done with HTTP requests) but I shall assume that
- All port 80 requests are HTTP and all 443 requests are HTTPS.
- You want all HTTP requests to be redirected to HTTPS
- All HTTPS requests should be passed to node
If so, this is probably what you actually want:
server {
root /var/www/html;
server_name my.domain.co.uk;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
The first server block handles only HTTPS requests and passes all requests to node. The second server block handles only HTTP requests and redirects them to HTTPS.
You did not include exactly what you wanted (e.g. which application should serve requests on which ports and what should be done with HTTP requests) but I shall assume that
- All port 80 requests are HTTP and all 443 requests are HTTPS.
- You want all HTTP requests to be redirected to HTTPS
- All HTTPS requests should be passed to node
If so, this is probably what you actually want:
server {
root /var/www/html;
server_name my.domain.co.uk;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.domain.co.uk/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.domain.co.uk/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.domain.co.uk) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name my.domain.co.uk;
return 404; # managed by Certbot
}
The first server block handles only HTTPS requests and passes all requests to node. The second server block handles only HTTP requests and redirects them to HTTPS.
answered Nov 15 '18 at 15:37
OrphamielOrphamiel
8041121
8041121
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
add a comment |
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -
2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
Thanks so much. I think that's what I want, I'm quite new to this I'm afraid. Could having the 443 in the second server block have caused server crash issues in the past? I'm wondering if I had too many redirects set-up. This was the error -
2018/11/14 08:46:19 [error] 32527#32527: *852 connect() failed (111: Connection refused) while connecting to upstream, client: client_ip, server: , request: "GET / HTTP/1.1", upstream: "http://server_ip:3001/", host: "server_ip:443"
– Matt
Nov 15 '18 at 16:26
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
I am not 100% sure but I think the HTTPS request was first passed to the 2nd block whereupon it tried to get "/" but was unable to. So it was tried once again but in HTTP which went through into the first block which was passed to the Node app. I'm not sure about why it was rejected after (but it might be because of Node settings such as not listening to http) sorry.
– Orphamiel
Nov 15 '18 at 17:49
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
Hey no problem, thanks so much.
– Matt
Nov 16 '18 at 16:59
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53321837%2fadding-an-ssl-port-443-to-an-nginx-reverse-proxy-server-port-80-nginx-conf%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown