Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Heroku
Heroku

7.7K
5.4K
+ 1
3.1K
nginx
nginx

54.7K
13.1K
+ 1
5.4K
Add tool

Heroku vs nginx: What are the differences?

Heroku: Build, deliver, monitor and scale web apps and APIs with a trail blazing developer experience. Heroku is a cloud application platform – a new way of building and deploying web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling; nginx: A high performance free open source web server powering busiest sites on the Internet. nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. According to Netcraft nginx served or proxied 30.46% of the top million busiest sites in Jan 2018.

Heroku belongs to "Platform as a Service" category of the tech stack, while nginx can be primarily classified under "Web Servers".

"Easy deployment", "Free for side projects" and "Huge time-saver" are the key factors why developers consider Heroku; whereas "High-performance http server", "Performance" and "Easy to configure" are the primary reasons why nginx is favored.

nginx is an open source tool with 9K GitHub stars and 3.41K GitHub forks. Here's a link to nginx's open source repository on GitHub.

reddit, Instacart, and Lyft are some of the popular companies that use nginx, whereas Heroku is used by StackShare, Heroku, and SendGrid. nginx has a broader approval, being mentioned in 8631 company stacks & 2494 developers stacks; compared to Heroku, which is listed in 1496 company stacks and 937 developer stacks.

- No public GitHub repository available -

What is Heroku?

Heroku is a cloud application platform – a new way of building and deploying web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling.

What is nginx?

nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. According to Netcraft nginx served or proxied 30.46% of the top million busiest sites in Jan 2018.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Heroku?
Why do developers choose nginx?

Sign up to add, upvote and see more prosMake informed product decisions

    Be the first to leave a con
    Jobs that mention Heroku and nginx as a desired skillset
    PinterestPinterest
    San Francisco, CA; Palo Alto, CA
    PinterestPinterest
    San Francisco, CA; Palo Alto, CA
    PinterestPinterest
    San Francisco, CA; Palo Alto, CA
    PinterestPinterest
    San Francisco, CA; Palo Alto, CA
    What companies use Heroku?
    What companies use nginx?

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with Heroku?
    What tools integrate with nginx?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    What are some alternatives to Heroku and nginx?
    DigitalOcean
    We take the complexities out of cloud hosting by offering blazing fast, on-demand SSD cloud servers, straightforward pricing, a simple API, and an easy-to-use control panel.
    Google App Engine
    Google has a reputation for highly reliable, high performance infrastructure. With App Engine you can take advantage of the 10 years of knowledge Google has in running massively scalable, performance driven systems. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow.
    Firebase
    Firebase is a cloud service designed to power real-time, collaborative applications. Simply add the Firebase library to your application to gain access to a shared data structure; any changes you make to that data are automatically synchronized with the Firebase cloud and with other clients within milliseconds.
    Docker
    The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere
    Microsoft Azure
    Azure is an open and flexible cloud platform that enables you to quickly build, deploy and manage applications across a global network of Microsoft-managed datacenters. You can build applications using any language, tool or framework. And you can integrate your public cloud applications with your existing IT environment.
    See all alternatives
    Decisions about Heroku and nginx
    Jerome Dalbert
    Jerome Dalbert
    Senior Backend Engineer at StackShare · | 7 upvotes · 16.8K views
    atGratify CommerceGratify Commerce
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk
    Heroku
    Heroku
    Rails
    Rails
    #PaaS

    When creating the web infrastructure for our start-up, I wanted to host our app on a PaaS to get started quickly.

    A very popular one for Rails is Heroku, which I love for free hobby side projects, but never used professionally. On the other hand, I was very familiar with the AWS ecosystem, and since I was going to use some of its services anyways, I thought: why not go all in on it?

    It turns out that Amazon offers a PaaS called AWS Elastic Beanstalk, which is basically like an “AWS Heroku”. It even comes with a similar command-line utility, called "eb”. While edge-case Rails problems are not as well documented as with Heroku, it was very satisfying to manage all our cloud services under the same AWS account. There are auto-scaling options for web and worker instances, which is a nice touch. Overall, it was reliable, and I would recommend it to anyone planning on heavily using AWS.

    See more
    Russel Werner
    Russel Werner
    Lead Engineer at StackShare · | 15 upvotes · 165.9K views
    atStackShareStackShare
    Redis
    Redis
    CircleCI
    CircleCI
    Webpack
    Webpack
    Amazon CloudFront
    Amazon CloudFront
    Amazon S3
    Amazon S3
    GitHub
    GitHub
    Heroku
    Heroku
    Rails
    Rails
    Node.js
    Node.js
    Apollo
    Apollo
    Glamorous
    Glamorous
    React
    React
    #FrontEndRepoSplit
    #Microservices
    #SSR
    #StackDecisionsLaunch

    StackShare Feed is built entirely with React, Glamorous, and Apollo. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house Node.js rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our Rails web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a Heroku environment, we needed to split out our front-end application into a separate repo in GitHub. The driving factor in this decision was mostly due to limitations imposed by Heroku specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes.

    Related to this, we need a way to "deploy" our frontend changes to various server environments without building & releasing the entire Ruby application. We built a hybrid Amazon S3 Amazon CloudFront solution to host our Webpack bundles. A new CircleCI script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in Redis so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build & release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!

    #StackDecisionsLaunch #SSR #Microservices #FrontEndRepoSplit

    See more
    Tim Abbott
    Tim Abbott
    Founder at Zulip · | 4 upvotes · 32.6K views
    atZulipZulip
    Apache HTTP Server
    Apache HTTP Server
    nginx
    nginx

    We've been happy with nginx as part of our stack. As an open source web application that folks install on-premise, the configuration system for the webserver is pretty important to us. I have a few complaints (e.g. the configuration syntax for conditionals is a pain), but overall we've found it pretty easy to build a configurable set of options (see link) for how to run Zulip on nginx, both directly and with a remote reverse proxy in front of it, with a minimum of code duplication.

    Certainly I've been a lot happier with it than I was working with Apache HTTP Server in past projects.

    See more
    Go
    Go
    Lua
    Lua
    OpenResty
    OpenResty
    nginx
    nginx
    Logstash
    Logstash
    Prometheus
    Prometheus

    At Kong while building an internal tool, we struggled to route metrics to Prometheus and logs to Logstash without incurring too much latency in our metrics collection.

    We replaced nginx with OpenResty on the edge of our tool which allowed us to use the lua-nginx-module to run Lua code that captures metrics and records telemetry data during every request’s log phase. Our code then pushes the metrics to a local aggregator process (written in Go) which in turn exposes them in Prometheus Exposition Format for consumption by Prometheus. This solution reduced the number of components we needed to maintain and is fast thanks to NGINX and LuaJIT.

    See more
    Amazon ElastiCache
    Amazon ElastiCache
    Amazon Elasticsearch Service
    Amazon Elasticsearch Service
    AWS Elastic Load Balancing (ELB)
    AWS Elastic Load Balancing (ELB)
    Memcached
    Memcached
    Redis
    Redis
    Python
    Python
    AWS Lambda
    AWS Lambda
    Amazon RDS
    Amazon RDS
    Microsoft SQL Server
    Microsoft SQL Server
    MariaDB
    MariaDB
    Amazon RDS for PostgreSQL
    Amazon RDS for PostgreSQL
    Rails
    Rails
    Ruby
    Ruby
    Heroku
    Heroku
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk

    We initially started out with Heroku as our PaaS provider due to a desire to use it by our original developer for our Ruby on Rails application/website at the time. We were finding response times slow, it was painfully slow, sometimes taking 10 seconds to start loading the main page. Moving up to the next "compute" level was going to be very expensive.

    We moved our site over to AWS Elastic Beanstalk , not only did response times on the site practically become instant, our cloud bill for the application was cut in half.

    In database world we are currently using Amazon RDS for PostgreSQL also, we have both MariaDB and Microsoft SQL Server both hosted on Amazon RDS. The plan is to migrate to AWS Aurora Serverless for all 3 of those database systems.

    Additional services we use for our public applications: AWS Lambda, Python, Redis, Memcached, AWS Elastic Load Balancing (ELB), Amazon Elasticsearch Service, Amazon ElastiCache

    See more
    Scott Mebberson
    Scott Mebberson
    CTO / Chief Architect at Idearium · | 5 upvotes · 16.5K views
    Caddy
    Caddy
    nginx
    nginx

    We used to primarily use nginx for our static web server and proxy in-front of Node.js. Now, we use Caddy. And we couldn't be happier.

    Caddy is simpler on all fronts. Configuration is easier. Free HTTPS out of the box. Some fantastic plugins. And for the most part, it's fast.

    Don't get me wrong, it's not lost on me that Nginx is actually a superior product.

    But for the times when you don't need that extra performance, and complexity - take a look at Caddy.

    See more
    Docker
    Docker
    OpenShift
    OpenShift
    Heroku
    Heroku

    Heroku vs OpenShift. I've never decided which one is better. Heroku is easier to configure. Openshift provide a better machine for free. Heroku has many addons for free. I've chosen Heroku because of easy initial set-up. I had deployment based on git push. I also tried direct deployment of jar file. Currently Heroku runs my Docker image. Heroku has very good documentation like for beginners. So if you want to start with something, let's follow Heroku. On the other hand OpenShift seems like a PRO tool supported by @RedHat.

    See more
    Simon Bettison
    Simon Bettison
    Managing Director at Bettison.org Limited · | 6 upvotes · 73.6K views
    atBettison.org LimitedBettison.org Limited
    Amazon EC2 Container Service
    Amazon EC2 Container Service
    Docker
    Docker
    Amazon VPC
    Amazon VPC
    Amazon Route 53
    Amazon Route 53
    Amazon SQS
    Amazon SQS
    Amazon SES
    Amazon SES
    Amazon CloudFront
    Amazon CloudFront
    nginx
    nginx
    Unicorn
    Unicorn
    Ruby
    Ruby
    Travis CI
    Travis CI
    Selenium
    Selenium
    RSpec
    RSpec
    Rails
    Rails
    Amazon ElastiCache
    Amazon ElastiCache
    Redis
    Redis
    Sidekiq
    Sidekiq
    Elasticsearch
    Elasticsearch
    PostgreSQL
    PostgreSQL

    In 2010 we made the very difficult decision to entirely re-engineer our existing monolithic LAMP application from the ground up in order to address some growing concerns about it's long term viability as a platform.

    Full application re-write is almost always never the answer, because of the risks involved. However the situation warranted drastic action as it was clear that the existing product was going to face severe scaling issues. We felt it better address these sooner rather than later and also take the opportunity to improve the international architecture and also to refactor the database in. order that it better matched the changes in core functionality.

    PostgreSQL was chosen for its reputation as being solid ACID compliant database backend, it was available as an offering AWS RDS service which reduced the management overhead of us having to configure it ourselves. In order to reduce read load on the primary database we implemented an Elasticsearch layer for fast and scalable search operations. Synchronisation of these indexes was to be achieved through the use of Sidekiq's Redis based background workers on Amazon ElastiCache. Again the AWS solution here looked to be an easy way to keep our involvement in managing this part of the platform at a minimum. Allowing us to focus on our core business.

    Rails ls was chosen for its ability to quickly get core functionality up and running, its MVC architecture and also its focus on Test Driven Development using RSpec and Selenium with Travis CI providing continual integration. We also liked Ruby for its terse, clean and elegant syntax. Though YMMV on that one!

    Unicorn was chosen for its continual deployment and reputation as a reliable application server, nginx for its reputation as a fast and stable reverse-proxy. We also took advantage of the Amazon CloudFront CDN here to further improve performance by caching static assets globally.

    We tried to strike a balance between having control over management and configuration of our core application with the convenience of being able to leverage AWS hosted services for ancillary functions (Amazon SES , Amazon SQS Amazon Route 53 all hosted securely inside Amazon VPC of course!).

    Whilst there is some compromise here with potential vendor lock in, the tasks being performed by these ancillary services are no particularly specialised which should mitigate this risk. Furthermore we have already containerised the stack in our development using Docker environment, and looking to how best to bring this into production - potentially using Amazon EC2 Container Service

    See more
    Chris McFadden
    Chris McFadden
    VP, Engineering at SparkPost · | 7 upvotes · 43.9K views
    atSparkPostSparkPost
    Lua
    Lua
    OpenResty
    OpenResty
    nginx
    nginx

    We use nginx and OpenResty as our API proxy running on EC2 for auth, caching, and some rate limiting for our dozens of microservices. Since OpenResty support embedded Lua we were able to write a custom access module that calls out to our authentication service with the resource, method, and access token. If that succeeds then critical account info is passed down to the underlying microservice. This proxy approach keeps all authentication and authorization in one place and provides a unified CX for our API users. Nginx is fast and cheap to run though we are always exploring alternatives that are also economical. What do you use?

    See more
    GitHub
    GitHub
    nginx
    nginx
    ESLint
    ESLint
    AVA
    AVA
    Semantic UI React
    Semantic UI React
    Redux
    Redux
    React
    React
    PostgreSQL
    PostgreSQL
    ExpressJS
    ExpressJS
    Node.js
    Node.js
    FeathersJS
    FeathersJS
    Heroku
    Heroku
    Amazon EC2
    Amazon EC2
    Kubernetes
    Kubernetes
    Jenkins
    Jenkins
    Docker Compose
    Docker Compose
    Docker
    Docker
    #Frontend
    #Stack
    #Backend
    #Containers
    #Containerized

    Recently I have been working on an open source stack to help people consolidate their personal health data in a single database so that AI and analytics apps can be run against it to find personalized treatments. We chose to go with a #containerized approach leveraging Docker #containers with a local development environment setup with Docker Compose and nginx for container routing. For the production environment we chose to pull code from GitHub and build/push images using Jenkins and using Kubernetes to deploy to Amazon EC2.

    We also implemented a dashboard app to handle user authentication/authorization, as well as a custom SSO server that runs on Heroku which allows experts to easily visit more than one instance without having to login repeatedly. The #Backend was implemented using my favorite #Stack which consists of FeathersJS on top of Node.js and ExpressJS with PostgreSQL as the main database. The #Frontend was implemented using React, Redux.js, Semantic UI React and the FeathersJS client. Though testing was light on this project, we chose to use AVA as well as ESLint to keep the codebase clean and consistent.

    See more
    nginx
    nginx

    I use nginx because it is very light weight. Where Apache tries to include everything in the web server, nginx opts to have external programs/facilities take care of that so the web server can focus on efficiently serving web pages. While this can seem inefficient, it limits the number of new bugs found in the web server, which is the element that faces the client most directly.

    See more
    Marcel Kornegoor
    Marcel Kornegoor
    CTO at AT Computing · | 6 upvotes · 7.9K views
    Apache HTTP Server
    Apache HTTP Server
    nginx
    nginx

    nginx or Apache HTTP Server that's the question. The best choice depends on what it needs to serve. In general, Nginx performs better with static content, where Apache and Nginx score roughly the same when it comes to dynamic content. Since most webpages and web-applications use both static and dynamic content, a combination of both platforms may be the best solution.

    Since both webservers are easy to deploy and free to use, setting up a performance or feature comparison test is no big deal. This way you can see what solutions suits your application or content best. Don't forget to look at other aspects, like security, back-end compatibility (easy of integration) and manageability, as well.

    A reasonably good comparison between the two can be found in the link below.

    See more
    AWS Elastic Beanstalk
    AWS Elastic Beanstalk
    Heroku
    Heroku
    uWSGI
    uWSGI
    Gunicorn
    Gunicorn

    I use Gunicorn because does one thing - it’s a WSGI HTTP server - and it does it well. Deploy it quickly and easily, and let the rest of your stack do what the rest of your stack does well, wherever that may be.

    uWSGI “aims at developing a full stack for building hosting services” - if that’s a thing you need then ok, but I like the principle of doing one thing well, and I deploy to platforms like Heroku and AWS Elastic Beanstalk where the rest of the “hosting service” is provided and managed for me.

    See more
    Munkhtegsh Munkhbat
    Munkhtegsh Munkhbat
    Software Engineer Consultant at LoanSnap · | 9 upvotes · 12.7K views
    GraphQL
    GraphQL
    Apollo
    Apollo
    React
    React
    Heroku
    Heroku
    styled-components
    styled-components
    PostgreSQL
    PostgreSQL
    Prisma
    Prisma
    graphql-yoga
    graphql-yoga
    #Frontend
    #Backend

    In my last side project, I built a web posting application that has similar features as Facebook and hosted on Heroku. The user can register an account, create posts, upload images and share with others. I took an advantage of graphql-subscriptions to handle realtime notifications in the comments section. Currently, I'm at the last stage of styling and building layouts.

    For the #Backend I used graphql-yoga, Prisma, GraphQL with PostgreSQL database. For the #FrontEnd: React, styled-components with Apollo. The app is hosted on Heroku.

    See more
    Interest over time
    Reviews of Heroku and nginx
    Review ofHerokuHeroku

    I use Heroku, for almost any project of mine. Their free plan is awesome for testing, solo developers or your startup and its almost impossible to not cover you somehow. Adding an add on is a simple command away and I find it easy to use it both on my Windows PC or my Linux laptop. Their documentation, covers almost everything. In particular I have used Heroku for Spring, Django and AngularJS. I even find it easier to run my project on my local dev with foreman start, than ./manage.py runserver (for my django projects). There is no place like Heroku for the developer!

    Review ofHerokuHeroku

    Can't beat the simplicity of deploying and managing apps, the pricing is a bit high, but you are paying for those streamlined tools. However, after several experiences of tracing issues back to Heroku's stack, not having visibility into what they are doing has prompted moving two applications off of it and on to other more transparent cloud solutions. Heroku is amazing for what it is, hosting for early stage products.

    Review ofHerokuHeroku

    I've been using Heroku for 3 years now, they have grown super fast and each time they're improving their services. What I really like the most is how easily you can show to your client the advances on you project, it would take you maximum 15 minutes to configure two environments (Staging/Production). It is simply essential and fantastic!

    Review ofHerokuHeroku

    I liked how easy this was to use and that I could create some proof of concepts without have to pay. The downside for NodeJS is remote debugging. Pretty much have to depend on logging where Azure allows remote debugging with Node Inspector.

    Review ofHerokuHeroku

    Using Heroku takes away all the pains associated with managing compute and backing services. It may require a little extra optimisation and tweaks, but these constraints often make your app better anyway.

    How developers use Heroku and nginx
    Avatar of StackShare
    StackShare uses HerokuHeroku

    Not having to deal with servers is a huge win for us. There are certainly trade-offs (having to wait if the platform is down as opposed to being able to fix the issue), but we’re happy being on Heroku right now. Being able to focus 100% of our technical efforts on application code is immensely helpful.

    Two dynos seems to be the sweet spot for our application. We can handle traffic spikes and get pretty consistent performance otherwise.

    We have a total of four apps on Heroku: Legacy Leanstack, StackShare Prod, StackShare Staging, StackShare Dev. Protip: if you’re setting up multiple environments based on your prod environment, just run heroku fork app name. Super useful, it copies over your db, add-ons, and settings.

    We have a develop branch on GitHub that we push to dev to test out, then if everything is cool we push it to staging and eventually prod. Hotfixes of course go straight to staging and then prod usually.

    Avatar of MaxCDN
    MaxCDN uses nginxnginx

    The original API performed a synchronous Nginx reload after provisioning a zone, which often took up to 30 seconds or longer. While important, this step shouldn’t block the response to the user (or API) that a new zone has been created, or block subsequent requests to adjust the zone. With the new API, an independent worker reloads Nginx configurations based on zone modifications.It’s like ordering a product online: don’t pause the purchase process until the product’s been shipped. Say the order has been created, and you can still cancel or modify shipping information. Meanwhile, the remaining steps are being handled behind the scenes. In our case, the zone provision happens instantly, and you can see the result in your control panel or API. Behind the scenes, the zone will be serving traffic within a minute.

    Avatar of Cloudcraft
    Cloudcraft uses nginxnginx

    Nginx serves as the loadbalancer, router and SSL terminator of cloudcraft.co. As one of our app server nodes is spun up, an Ansible orchestration script adds the new node dynamically to the nginx loadbalancer config which is then reloaded for a zero downtime seamless rolling deployment. By putting nginx in front or whatever web and API servers you might have, you gain a ton of flexibility. While previously I've cobbled together HAProxy and Stun as a poor man's loadbalancer, nginx just does a much better job and is far simpler in the long run.

    Avatar of StackShare
    StackShare uses HerokuHeroku

    We keep the Metrics tab open while we load test, and hit refresh to see what’s going on: heroku metric

    I would expect the graphs to expand with some sort of detail, but that’s not the case. So these metrics aren’t very useful. The logs are far more useful, so we just keep the tail open while we test.

    Avatar of Tim Lucas
    Tim Lucas uses HerokuHeroku

    Heroku runs the web and background worker processes. Auto-deployments are triggered via GitHub commits and wait for the Buildkite test build to pass. Heroku pipelines with beta release phase execution (for automatically running database migrations) allowed for easy manual testing of big new releases. Web and worker logs are sent to Papertrail.

    Avatar of Jeff Flynn
    Jeff Flynn uses HerokuHeroku

    As much as I love AWS EC, I prefer Heroku for apps like this. Heroku has grown up around Rails and Ruby, massive set of add-ons that are usually one-click setup, and I once had to perform an emergency app scale-up a that I completed in seconds from my mobile phone whilst riding the Bangkok subway. Doesn't get much easier than that.

    Avatar of datapile
    datapile uses nginxnginx

    Used nginx as exactly what it is great for: serving static content in a cache-friendly, load balanced manner.

    It is exclusively for production web page hosting, we don't use nginx internally, only on the public-facing versions of static sites / Angular & Backbone/Marionette applications.

    Avatar of Pēteris Caune
    Pēteris Caune uses nginxnginx

    We use NGINX both as reverse HTTP proxy and also as a SMTP proxy, to handle incoming email.

    We previously handled incoming email with Mandrill, and then later with AWS SES. Handling incoming email yourself is not that much more difficult and saves quite a bit on operational costs.

    Avatar of danlangford
    danlangford uses HerokuHeroku

    With its complimentary SSL (on *.herokuapp.com) we can test everything. Our dev branch is built and deployed out to Heroku. Testing happens out here. not production cause $20/mo is TOO much to pay for the ability to use my own SSL purchased elsewhere.

    Avatar of Wirkn Inc.
    Wirkn Inc. uses nginxnginx

    NGINX sits in front of all of our web servers. It is fantastic at load balancing traffic as well as serving as a cache at times when under massive load. It's a robust tool that we're happy to have at the front lines of all Wirkn web apps.

    How much does Heroku cost?
    How much does nginx cost?
    Pricing unavailable