Hallo zusammen, lass mich kurz in dieses Gespräch einsteigen…
Ich verwende einen AWS Load Balancer mit einem von Amazon ausgestellten Zertifikat, das ich nicht auf meiner EC2-Instanz herunterladen kann. Wenn ich über https://www.capitool.com.br auf mein Forum zugreife, funktioniert alles einwandfrei. Beim Zugriff über capitool.com.br hingegen, wo standardmäßig HTTP verwendet wird, funktioniert es nicht.
In Route 53 habe ich einen ALIAS-Eintrag von capitool.com.br zu www.capitool.com.br konfiguriert. Wenn also capitool.com.br aufgerufen wird, leitet Route 53 die Anfrage an www.capitool.com.br weiter.
Deshalb habe ich eine Kopie von web.ssl.template.yml erstellt und den gesamten Inhalt durch Folgendes ersetzt:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /server.+{/
to: |
server {
listen 80;
return 301 https://$$ENV_DISCOURSE_HOSTNAME$request_uri;
}
server {
Dabei erhielt ich jedoch einen „Too Many Requests"-Fehler. Ich habe es auch mit folgendem Ansatz versucht:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: /server.+{/
to: |
server {
listen 80;
server_name forum.com.br www.forum.com.br;
rewrite ^/(.*) https://$$ENV_DISCOURSE_HOSTNAME$request_uri permanent;
}
server {
Auch das hatte leider keinen Erfolg.
Könnt ihr mir bitte helfen? Mein Forum ist aktuell nicht erreichbar.
Ich habe HTTPS bisher noch nicht über das Admin-Panel erzwungen.
Does meta.discourse run on http behind the AWS ELB (using https)?
Or both Amazon ELB and discourse server are having HTTPS?
The question is to have https config ONLY at Load balance server level. The discourse install should be only using HTTP and still should be able to REWRITE/REDIRECT to https version.
Ya… but, how does the redirection work at the discourse server level then?
There has to be some redirection rule at discourse set up. In my case, google load balance server does not handle the redirection.
Google recommends that this rule should be added to the discourse’s web server:
server {
listen 80;
server_name www.example.org;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
}
}
The question is where should we add this rule?
I have tried adding it in app.yml (inside after_web_config hook) but, it does not work.
It starts showing the ‘Welcome to Nginx’ screen after adding the above rule.
Do you have any suggestions as to how this rule can be configured in Discourse set up?
enter container, mess with nginx config file inside container, run sv restart nginx to have it take effect. Continue messing with nginx conf until you have something that works.
Only after that would you add it to the bootstrap process.
A complete guide on this would be fantastic. There seems to be bits & pieces (plenty of interest) around this topic of deploying on AWS in a HA environment with ELB.
I acknowledge that such a document would compete against hosted options.
Very extremely unlikely we are going to publish any guidelines on “this is how you build a super mega enterprise Discourse setup” for a book full of reasons.
If the community want to share knowledge be our guests
Unless you are doing at least 20 million pageviews per month – and please do correct me if you are – you can trivially achieve “not going to wake me up” and “scales” just fine on a single Digital Ocean droplet.
Otherwise you have decided to opt yourself into pain. Which is entirely your perogative, if that’s what you want.