Need help? Chat now!

Hostwinds 教程

寻找结果为:


目录


先决条件
Nginx配置
测试Nginx配置

Nginx反向代理与SSL

标签 SSL,  Cloud Servers,  VPS 

先决条件
Nginx配置
测试Nginx配置

nginx是一个强大的工具。 它允许您为多个应用程序,网站,负载平衡应用提供服务等等。 这种灵活性全部由相对简单的配置系统提供支持,该系统使用几乎是人类可读的配置文件。 本指南将演示如何使用SSL设置NGINX反向代理 Hostwinds Cloud VPS.

先决条件

本指南将对通过命令行使用基于Linux的系统的一般性了解,并进一步假设以下先决条件:

  • Ubuntu 18.04
  • 非root用户
  • 应用程序在所需的反向代理端口上运行(本指南将使用端口3000)
  • 所需域名的DNS A名称记录
  • 域的SSL证书

Nginx配置

Nginx-full软件包默认为动态共享虚拟主机环境。 每个虚拟主机的配置文件都可以在这里使用:

/etc/nginx/sites-available/

此位置将有一个名为 默认 可用作基本模板。 但是,我们将在本指南中手动创建一个新的配置文件并根据需要填充它。 登录为非root用户身份时,发出此命令以启动该过程:

sudo touch /etc/nginx/sites-available/domain.tld

请务必更换 Domain-TLD. 与您实际使用的域。

接下来,我们移动修改该文件以执行我们需要执行的任务。 我们将使用 vim 在本指南中为文本编辑器。 您可以使用 纳米 或根据您的个人喜好使用任何其他文本编辑器。

sudo vim /etc/nginx/sites-available/domain.tld

既然文件存在将以下文本添加到此文件中。 修改指示为引用域的文本,您的应用程序使用的端口以及SSL证书路径。 此文件将是反向代理的主要配置:

###
# This Section listens on port 80 for your domain and rewrites the request 
# to HTTPS for us
###

server {
listen 80;
server_name domain.tld www.domain.tld; # Edit this to your domain name
rewrite ^ https://$host$request_uri permanent;
}

###
# This is all the configuration declarations that help SSL Function.
###

server {
listen 443 ssl;

server_name domain.tld;
# Edit this to your domain name

ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem;       
# If you use Lets Encrypt, you should just need to change the domain. 

ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem;     
# If you use Let's Encrypt, you should just need to change the domain.

ssl_session_cache builtin:1000 shared:SSL:10m;                        
# Defining option to share SSL Connection with Passed Proxy

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;                                  
# Defining used protocol versions. 

ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; 
# Defining ciphers to use. 

ssl_prefer_server_ciphers on;                                         
# Enabling ciphers

access_log /var/log/nginx/access.log;                                 
# Log Location. Can be anywhere. Make sure the nginx user defined in /etc/nginx/nginx.conf has r/w permissions

###
# This is the juicey part of the config file, handing off relevant data to 
# our back-end app running on port 3000
# Nothing should need to be changed here, unless port 3000 is not the port 
# you're using. 
# Furthermore, if you're using a socket to serve your app (PHP comes to 
# mind), you can define a unix:.sock location here as well
###

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:3000;
proxy_read_timeout 90;
}
}

保存文件并退出文本编辑器。

测试Nginx配置

现在已经创建了配置,我们必须告诉Nginx检查加载的文件。 我们将建立一个符号链接:

sudo ln -s /etc/nginx/sites-avaialable/domain.tld /etc/nginx/sites-enabled/domain.tld.conf

接下来,我们在重新启动Nginx系统服务之前测试配置

sudo nginx -t

之后,它应该运行测试并在成功时输出以下消息:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

我们现在知道配置文件不会导致崩溃,因此让我们重新启动nginx服务并测试应用程序。

sudo systemctl restart nginx

您现在应该通过浏览到定义的端口上运行的应用程序访问 Domain-TLD. 如先前创建的Nginx配置文件中所述。

撰写者 Hostwinds Team  /  六月 14, 2019