django - 如何为 Angular 和 django 设置 Nginx 服务器
问题描述
我正在尝试将 Web 应用程序部署到我的服务器。我已将 html 文件放在一个文件夹中,并且我在同一台服务器上运行了一个 django 服务器。我正在使用 nginx 为后端设置反向代理,但由于某种原因,我无法路由到后端 url。
这是我的nginx配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://example.com$request_uri;
}
server {
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
server_name example.com example.com;
root /var/www/html/;
index index.html;
# Let's Encrypt parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
try_files $uri $uri/ = index.html;
}
location /api {
proxy_pass http://unix:/run/gunicorn.sock;
proxy_redirect off;
proxy_set_header Host $http_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 https;
}
}
在第一个块中..我将后备设置为 index.html 因为它是一个角度应用程序。角度应用程序运行良好。
但是我无法访问反向代理服务器的路由,每当我使用/api/something访问路由时,它都会将我带回角度应用程序,即 index.html
解决方案
这很简单,我不得不像这样修改路径块
location ~^/(admin|api) {
proxy_pass http://unix:/run/gunicorn.sock;
proxy_redirect off;
proxy_set_header Host $http_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 https;
}
推荐阅读
- java - 将 Java FX 表单数据添加到 ArrayList
- reactjs - 在按钮单击时反应切换类名
- sql - SQL查询以获取两个大范围列表之间的重叠条目
- java - C#.NET 是否具有与 Java 的 JAR 文件密封包功能等效的功能?
- sql - 如何使用 ST_Touches 获取触摸几何的相交长度
- shell - 如何在 zsh 脚本中编写复杂的 psql 命令?
- c# - 使用 IronWebScraper 时如果一个 URL 返回 404,如何继续抓取下一个 URL
- python - 使用现有变量引用 pandas 列名
- functional-programming - 带有延续问题的 F# 扩展欧几里得算法
- r - 在 R 中生成随机块示意图