proxies init
parent
119da68310
commit
054f534108
@ -1,11 +1,16 @@
|
||||
Configuring Web Server / Proxies
|
||||
================================
|
||||
|
||||
Here a few options that you can use to proxy your NodeBB forum.
|
||||
|
||||
testing
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:maxdepth: 0
|
||||
|
||||
Nginx <proxies/nginx>
|
||||
Apache <proxies/apache>
|
||||
Varnish Cache <proxies/varnish>
|
||||
|
||||
testing
|
||||
-------
|
||||
|
||||
testing
|
||||
* :doc:`Nginx <proxies/nginx>`
|
||||
* :doc:`Apache <proxies/apache>`
|
||||
* :doc:`Varnish Cache <proxies/varnish>`
|
@ -0,0 +1,50 @@
|
||||
NodeBB by default runs on port `4567`, meaning that builds are usually accessed using a port number in addition to their hostname:
|
||||
|
||||
http://example.org:4567
|
||||
|
||||
In order to allow NodeBB to be served without a port, nginx can be set up to proxy all requests to a particular hostname (or subdomain) to an upstream NodeBB build running on any port.
|
||||
|
||||
## Requirements
|
||||
|
||||
* NGINX version v1.3.13 or greater
|
||||
* Package managers may not provide a new enough version. To get the latest version, [compile it yourself](http://nginx.org/en/download.html), or if on Ubuntu, use the [NGINX Stable](https://launchpad.net/~nginx/+archive/stable) or [NGINX Development](https://launchpad.net/~nginx/+archive/development) PPA builds, if you are on Debian, use [DotDeb repository](http://www.dotdeb.org/instructions/) to get the latest version of Nginx.
|
||||
* To determine your nginx version, execute `nginx -V` in a shell
|
||||
|
||||
## Configuration
|
||||
|
||||
NGINX-served sites are contained in a `server` block. This block of options goes in a specific place based on how nginx was installed and configured:
|
||||
|
||||
* `/path/to/nginx/sites-available/*` -- files here must be aliased to `../sites-enabled`
|
||||
* `/path/to/nginx/conf.d/*.conf` -- filenames must end in `.conf`
|
||||
* `/path/to/nginx/httpd.conf` -- if all else fails
|
||||
|
||||
Below is the basic nginx configuration for a NodeBB build running on port `4567`:
|
||||
|
||||
``` nginx
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name forum.example.org;
|
||||
|
||||
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://127.0.0.1:4567/;
|
||||
proxy_redirect off;
|
||||
|
||||
# Socket.IO Support
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
* nginx must be on version 1.4.x to properly support websockets. Debian/Ubuntu use 1.2, although it will work there will be a reduction in functionality.
|
||||
* The `proxy_pass` IP should be `127.0.0.1` if your NodeBB is hosted on the same physical server as your nginx server. Update the port to match your NodeBB, if necessary.
|
||||
* This config sets up your nginx server to listen to requests for `forum.example.org`. It doesn't magically route the internet to it, though, so you also have to update your DNS server to send requests for `forum.example.org` to the machine with nginx on it!
|
@ -0,0 +1,34 @@
|
||||
To be sure Varnish will work properly with NodeBB check that your configuration ```/etc/varnish/default.vcl``` is optimized for **websockets**.
|
||||
|
||||
```varnish
|
||||
backend nodebb {
|
||||
.host = "127.0.0.1"; # your nodebb host
|
||||
.port = "4567"; # your nodebb port
|
||||
}
|
||||
|
||||
sub vcl_recv {
|
||||
|
||||
# Pipe websocket connections directly to Node.js
|
||||
if (req.http.Upgrade ~ "(?i)websocket") {
|
||||
set req.backend = nodebb;
|
||||
return (pipe);
|
||||
}
|
||||
|
||||
# NodeBB
|
||||
if (req.http.host == "forum.yourwebsite.com") { # change this to match your host
|
||||
if (req.url ~ "^/socket.io/") {
|
||||
set req.backend = nodebb;
|
||||
return (pipe); # return pass seems not working for websockets
|
||||
}
|
||||
return (pass); # don't cache
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sub vcl_pipe {
|
||||
# Need to copy the upgrade header
|
||||
if (req.http.upgrade) {
|
||||
set bereq.http.upgrade = req.http.upgrade;
|
||||
}
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue