» Rust:使用Rocket构建REST API » 3. 部署 » 3.2 Nginx反向代理

Nginx反向代理

此刻,你的端点 URL 如下所示:

http://localhost:8000/books

让我们剥去端口部分(:8000)。

你可以简单地在配置文件中将服务运行端口改成 80

端口 80443 分别是 HTTP 和 HTTPS 协议服务的默认端口。它们在 URL 中不显示。

@@ -1,5 +1,5 @@
 [app]
-port = 8000
+port = 80
 page_size = 5
 token_secret = "I_Love_LiteRank"
 token_hours = 48

警惕: 你可能需要执行 sudo cargo run 来运行在 80 端口。但是,你的应用不应该以 root 身份运行,因为它不安全。

但是,如果你在一台机器上有多个服务(api服务器,web服务器,聊天服务器等),且想将全部服务通过 80 端口对外服务,又该如何呢?

你需要反向代理

Nginx 配置

安装 nginx:https://nginx.org/en/docs/install.html

假设你有一个运行在 8000 端口的 API 服务和一个运行在 3000 端口的 web 服务。 你可以如下设置 Nginx 配置:

server {
    listen 80;

    server_name yourdomain.com;

    location /web {
        proxy_pass http://localhost:3000;
        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;
    }

    location / {
        proxy_pass http://localhost:8000;
        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;
    }
}

重载 Nginx 并应用这些更改。

然后,你可以发出如下请求了:

curl http://localhost/books
上页下页