You don't want to use Apache because Nginx is better suited, since Nginx is built for async I/O. You want to use Nginx as a forward proxy service that will point your clients to the actual node.js web servers. This allows for horizontal scaling as your application grows to deal with increased load. So if you outgrow your first Nginx server, you can install another one and another... You'll also be able to do the same with your Node.js web servers.
client web browser <--> Nginx <--> Express app.js
You will also be able to serve static content faster if you serve from nginx and then use Express for your dynamic content. For deployment, you might want to write an sh script to just copy and run your Express server like normal and run your Nginx server like normal, but with a forwarding proxy setup. You could use a script in Nginx like this:
upstream your_domain_app {
server 127.0.0.1:8000;
}
server {
listen 0.0.0.0:80;
server_name your_domain.com your_domain;
access_log /var/log/nginx/your_domain.log;
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_set_header X-NginX-Proxy true;
proxy_pass http://your_domain_app/;
proxy_redirect off;
}
}