{"id":188,"date":"2017-01-24T00:16:16","date_gmt":"2017-01-23T14:16:16","guid":{"rendered":"http:\/\/www.codenkeg.com\/blog\/?p=188"},"modified":"2017-01-24T01:18:50","modified_gmt":"2017-01-23T15:18:50","slug":"setting-up-nginx-on-ubuntu-for-parse-server","status":"publish","type":"post","link":"http:\/\/www.codenkeg.com\/blog\/2017\/01\/24\/setting-up-nginx-on-ubuntu-for-parse-server\/","title":{"rendered":"Setting up nginx on Ubuntu for parse-server"},"content":{"rendered":"<h2>Before You Begin<\/h2>\n<ol>\n<li>Check for updates<br \/>\n<code>sudo apt-get update && sudo apt-get upgrade<\/code><\/li>\n<\/ol>\n<h2>Install nginx<\/h2>\n<ol>\n<li>Install nginx<br \/>\n<code>sudo apt-get install -y nginx<\/code><\/li>\n<li>Decide how you want to access parse:<br \/>\na. example.com\/parseapp\/<br \/>\nb. parseapp.example.com\/ (don&#8217;t forget to add an A record for parseapp pointing to the IP address and include subdomain in Let&#8217;s Encrypt certificates)<\/li>\n<\/ol>\n<h2>Setup nginx for example.com\/parseapp\/<\/h2>\n<ol>\n<li>Change directory<br \/>\n<code>cd \/etc\/nginx\/sites-enabled\/<\/code><\/li>\n<li>Open default<br \/>\n<code>sudo nano default<\/code><\/li>\n<li>Select all<br \/>\n<kbd>ctrl+shift+6<\/kbd><br \/>\n<kbd>\u2193\u2193\u2193\u2193<\/kbd> to the bottom<br \/>\n<kbd>ctrl+K<\/kbd><\/li>\n<li>Paste the following in, changing <code>example.com<\/code>, <code>parseapp<\/code>, and <code>portnumber<\/code>\n<pre class=\"lang:shell\" title=\"nginx configuration\"># HTTP - redirect all requests to HTTPS\r\nserver {\r\n    listen 80;\r\n    listen [::]:80 default_server ipv6only=on;\r\n    return 301 https:\/\/\\$host\\$request_uri;\r\n}\r\n\r\n# HTTPS - serve HTML from \/usr\/share\/nginx\/html, proxy requests to \/parse\/\r\n# through to Parse Server\r\nserver {\r\n        listen 443;\r\n        server_name example.com;\r\n\r\n        root \/usr\/share\/nginx\/html;\r\n        index index.html index.htm;\r\n\r\n        ssl on;\r\n        # Use certificate and key provided by Let's Encrypt:\r\n        ssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\r\n        ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\r\n        ssl_session_timeout 5m;\r\n        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\r\n        ssl_prefer_server_ciphers on;\r\n        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';\r\n\r\n        # Pass requests for example.com\/parseapp\/ to parse-server instance at localhost:portnumber\r\n\r\n        location \/parseapp\/ {\r\n                proxy_set_header X-Real-IP \\$remote_addr;\r\n                proxy_set_header X-Forwarded-For \\$proxy_add_x_forwarded_for;\r\n                proxy_set_header X-NginX-Proxy true;\r\n                proxy_pass http:\/\/localhost:portnumber\/parse\/;\r\n                proxy_ssl_session_reuse off;\r\n                proxy_set_header Host \\$http_host;\r\n                proxy_redirect off;\r\n        }\r\n        location \/ {\r\n                try_files \\$uri \\$uri\/ =404;\r\n        }\r\n}<\/pre>\n<\/li>\n<li>Save and exit<\/li>\n<li>Restart nginx<br \/>\n<code>sudo service nginx restart<\/code><\/li>\n<\/ol>\n<h2>Setup nginx for parseapp.example.com\/<\/h2>\n<ol>\n<li>Change directory<br \/>\n<code>cd \/etc\/nginx\/sites-enabled\/<\/code><\/li>\n<li>Open default<br \/>\n<code>sudo nano default<\/code><\/li>\n<li>Select all<br \/>\n<kbd>ctrl+shift+6<\/kbd><br \/>\n<kbd>\u2193\u2193\u2193\u2193<\/kbd> to the bottom<br \/>\n<kbd>ctrl+K<\/kbd><\/li>\n<li>Paste the following in, changing <code>example.com<\/code>, <code>parseapp<\/code>, and <code>portnumber<\/code>\n<pre class=\"lang:shell\" title=\"nginx configuration\"># HTTP - redirect all requests to HTTPS\r\nserver {\r\n    listen 80;\r\n    listen [::]:80 default_server ipv6only=on;\r\n    return 301 https:\/\/\\$host\\$request_uri;\r\n}\r\n\r\n# HTTPS - serve HTML from \/usr\/share\/nginx\/html, proxy requests to \/parse\/\r\n# through to Parse Server\r\nserver {\r\n        listen 443;\r\n        server_name example.com;\r\n\r\n        root \/usr\/share\/nginx\/html;\r\n        index index.html index.htm;\r\n\r\n        ssl on;\r\n        # Use certificate and key provided by Let's Encrypt:\r\n        ssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\r\n        ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\r\n        ssl_session_timeout 5m;\r\n        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\r\n        ssl_prefer_server_ciphers on;\r\n        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';\r\n\r\n        location \/ {\r\n                try_files \\$uri \\$uri\/ =404;\r\n        }\r\n}\r\n\r\nserver {\r\n        listen 443;\r\n        server_name parseapp.example.com;\r\n\r\n        root \/usr\/share\/nginx\/html;\r\n        index index.html index.htm;\r\n\r\n        ssl on;\r\n        # Use certificate and key provided by Let's Encrypt:\r\n        ssl_certificate \/etc\/letsencrypt\/live\/example.com\/fullchain.pem;\r\n        ssl_certificate_key \/etc\/letsencrypt\/live\/example.com\/privkey.pem;\r\n        ssl_session_timeout 5m;\r\n        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\r\n        ssl_prefer_server_ciphers on;\r\n        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';\r\n\r\n        # Pass requests for parseapp.example.com\/ to Parse Server instance at localhost:portnumber\/parse\/\r\n\r\n        location \/ {\r\n                proxy_set_header X-Real-IP \\$remote_addr;\r\n                proxy_set_header X-Forwarded-For \\$proxy_add_x_forwarded_for;\r\n                proxy_set_header X-NginX-Proxy true;\r\n                proxy_pass http:\/\/localhost:portnumber\/parse\/;\r\n                proxy_ssl_session_reuse off;\r\n                proxy_set_header Host \\$http_host;\r\n                proxy_redirect off;\r\n        }\r\n}<\/pre>\n<\/li>\n<li>Save and exit<\/li>\n<li>Restart nginx<br \/>\n<code>sudo service nginx restart<\/code><\/li>\n<\/ol>\n<h2>Mini series<\/h2>\n<ol>\n<li><a href=\"http:\/\/www.codenkeg.com\/blog\/2017\/01\/04\/setting-up-a-server-at-linode\/\" target=\"_blank\">Setting up a server at Linode<\/a><\/li>\n<li><a href=\"http:\/\/www.codenkeg.com\/blog\/2017\/01\/06\/install-lets-encrypt-to-create-ssl-certificates\/\" target=\"_blank\">Install Let\u2019s Encrypt to Create SSL Certificates on Ubuntu<\/a><\/li>\n<li><a href=\"http:\/\/www.codenkeg.com\/blog\/2017\/01\/06\/setting-up-mongodb-on-ubuntu\/\" target=\"_blank\">Setting up MongoDB on Ubuntu<\/a><\/li>\n<li><a href=\"http:\/\/www.codenkeg.com\/blog\/2017\/01\/24\/setting-up-nginx-on-ubuntu-for-parse-server\/\" target=\"_blank\">Setting up nginx on Ubuntu for parse-server<\/a><\/li>\n<li><a href=\"http:\/\/www.codenkeg.com\/blog\/2017\/01\/06\/setting-up-parse-server-on-ubuntu\/\" target=\"_blank\">Setting up parse-server on Ubuntu<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Before You Begin Check for updates sudo apt-get update &#038;&#038; sudo apt-get upgrade Install nginx Install nginx sudo apt-get install -y nginx Decide how you want to access parse: a. example.com\/parseapp\/ b. parseapp.example.com\/ (don&#8217;t forget to add an A record for parseapp pointing to the IP address and include subdomain in Let&#8217;s Encrypt certificates) Setup &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.codenkeg.com\/blog\/2017\/01\/24\/setting-up-nginx-on-ubuntu-for-parse-server\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Setting up nginx on Ubuntu for parse-server&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[1],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7VdP6-32","_links":{"self":[{"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/posts\/188"}],"collection":[{"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/comments?post=188"}],"version-history":[{"count":8,"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/posts\/188\/revisions"}],"predecessor-version":[{"id":268,"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/posts\/188\/revisions\/268"}],"wp:attachment":[{"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/media?parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/categories?post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.codenkeg.com\/blog\/wp-json\/wp\/v2\/tags?post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}