如何在Ubuntu 14.04上安装Nginx背后的话语

介绍

Discourse是一个为现代网络构建的开源社区讨论平台。

本教程将引导您完成配置Discourse的步骤,使用Nginx将其移至反向代理后面。在备用代理后面移动话语为您提供了在Droplet上运行其他网站的灵活性。

课程准备

在我们开始之前,请确保您拥有以下内容:

  • Ubuntu 14.04 腾讯CVM(1 GB或更大),没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 具有sudo权限的非root用户
  • 完全注册的域名。如果你没有域名,建议您先去这里注册一个域名,您需要将域名解析到您的服务器,您可以使用腾讯云云解析进行快速设置。
  • 确保您的域名配置为指向您的腾讯CVM。

本教程中的所有命令都应以非root用户身份运行。如果命令需要root访问权限,则前面会有sudo

第1步 - 配置话语

现在你已经安装了Discourse,我们需要将它配置为在Nginx后面工作。

警告:在我们配置Nginx之前,这将导致您的Discourse论坛停机。确保这是全新安装的Discourse或备份服务器,直到配置完成。

我们只需要将一个设置更改为Discourse,这样我们就可以将它移到Nginx之后。切换到包含配置文件的目录:

cd /var/discourse

然后,打开我们需要更改的配置文件:

sudo nano containers/app.yml

使用箭头键向下滚动到该expose部分(它应该在顶部附近)并更改此行上的第一个端口号:

...
## which TCP/IP ports should this container expose?
expose:
  - "25654:80"   # fwd host port 80   to container port 80 (http)
...

此号码可以是随机的,不应与他人共享。如果您愿意,您可以在您的服务器上启用防火墙,如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置。

现在保存并退出文本编辑器。

通过运行启用配置更改:

sudo ./launcher rebuild app

此步骤可能需要一段时间,请耐心等待。

您可以访问您的网站验证一切正常。Discourse(例如http://discourse.example.com)的域名将不再在Web浏览器中加载界面,但如果您使用刚为Discourse配置的端口,例如http:///discourse.example.com:25654

(将discourse.example.com替换为您的域名,并将25654替换为您刚刚在此步骤中使用的端口)。

第2步 - 安装和配置Nginx

现在Discourse已安装并配置为在Nginx后面工作,现在是安装Nginx的时候了。

要在Ubuntu上安装Nginx,只需输入此命令即可开始安装:

sudo apt-get install nginx

浏览到您的旧话语网址的URLhttp://discourse.example.com将显示默认的Nginx网页:

这可以。我们现在将此更改为您的论坛。首先,让我们停止Nginx:

sudo service nginx stop

然后,删除此默认网页配置 - 我们不需要它:

sudo rm /etc/nginx/sites-enabled/default

接下来,我们将为我们的Discourse服务器创建一个新的配置文件,我们将其命名discourse

sudo nano /etc/nginx/sites-enabled/discourse

复制并粘贴以下配置。用您的域名来替换discourse.example.com以及用您在上一步中使用的端口来替换25654

server {
        listen 80;
        server_name discourse.example.com;
        return 301 https://discourse.example.com$request_uri;
}
server {
        listen 443 ssl spdy; 
        server_name discourse.example.com;
        ssl_certificate /etc/letsencrypt/live/discourse.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/discourse.example.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
        ssl_prefer_server_ciphers on;
        location / {
                proxy_pass      http://discourse.example.com:25654/;
                proxy_read_timeout      90;
                proxy_redirect  http://discourse.example.com:25654/ https://discourse.example.com;
        }
}

这是配置的作用:

  • 第一个服务器块正在端口80上侦听域discourse.example.com,并在端口443上将所有请求重定向到SSL。这是可选的,但它会强制所有用户在您的网站上使用SSL。
  • 第二个服务器块在端口443上,并将请求传递给在端口上运行的Web服务器25654(在本例中为Discourse)。这主要使用反向代理将Discourse页面发送给您的用户并通过SSL进行回传。

您可能已经注意到我们正在/etc/letsencrypt上引用一些证书。在下一步中,我们将在重新启动Nginx之前生成这些。

第3步 - 重新启动Nginx

最后,我们的配置应该是完整的。运行此命令重新启动Nginx:

sudo service nginx restart

现在,如果您浏览https://discourse.example.com/,您的网站应该在线并使用Let's Encrypt进行保护,在大多数浏览器中显示为绿色锁。

结论

而已!您现在在Nginx后面设置了一个Discourse论坛。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《 How To Install Discourse Behind Nginx on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏三杯水

HTTPS配置优化及注意点

1. ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;

2943
来自专栏面朝大海春暖花开

https请求过程

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

8223
来自专栏java一日一条

如何针对老旧浏览器设置 HTTPS 策略

几天前,一位朋友问我:都说推荐用 Qualys SSL Labs 这个工具测试 SSL 安全性,为什么有些安全实力很强的大厂家评分也很低?我认为这个问题应该从两...

3042
来自专栏Pulsar-V

原 前后端密钥分配验证

1526
来自专栏Java修行之道

nginx配置https转发到tomcat(使用自签名的证书)

命令:openssl genrsa -des3 -out server.key 1024

1.5K2
来自专栏腾讯Bugly的专栏

iOS 中 HTTPS 证书验证浅析

导语 在 WWDC 16 中,Apple 表示, 从 2017年1月1日起(最新消息, 实施时间已延期),所有新提交的 App 使用系统组件进行的 HTTP 网...

6018
来自专栏老马寒门IT

JS 的加密库简介

作为前端,数据提交到后台之前,重要的数据要进行加密一下,虽然已经有 https 等技术,但是增加一道前端的加密还是相对更安全的。虽然,前端的加密很容破解,但是有...

3150
来自专栏Spark学习技巧

大数据集群安全系列之kafka使用SSL加密认证

Apache kafka允许客户端通过SSL进行连接。默认情况下SSL是禁止状态,可以根据需要开启。本文就是浪尖亲测,开启SSL认证。 1,为每一个kafka ...

77010
来自专栏编程

Nginx双证书ECC/RSA配置

大家好,我是你们的老朋友Alex。今天教大家使用nginx配置证书,双证书! Nginx1.11.0版本后提供了ESA/ECC双证书的支持,以下是参考链接: h...

6878
来自专栏张善友的专栏

Jexus服务器SSL二级证书安装指南

申请获得服务器证书有三张,一张服务器证书,二张中级CA证书。在Android微信中访问Https,如果服务器只有一张CA证书,就无法访问。 获取服务器证书中级...

2438

扫码关注云+社区

领取腾讯云代金券