【问题标题】:How do I transfer post requests to a different port with nginx?如何使用 nginx 将 post 请求传输到不同的端口?
【发布时间】:2020-10-25 17:49:04
【问题描述】:

我想将所有发布请求转移到端口 5000,因为这是我的快速服务器正在运行的地方。 这是我目前的 nginx 配置:

server {
    if ($host = www.website.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80 default_server;
  server_name www.website.com;
  return 301 https://$server_name$request_uri;


}

server {
        listen 443 ssl;
        server_name www.website.com;
    ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem; # managed$
    ssl_certificate_key /etc/letsencrypt/live/website.com/privkey.pem; # manag$

我知道在编写代码并将所有发布请求发送到 /api 然后从配置中重定向它之前,我可能应该考虑一下。但我没有,如果需要节点,我不想更改代码。

如何识别一个请求是否为 post 请求并将其传输到 5000 端口?

另外,这个配置文件是用什么语言编写的?看起来像js其实不是的

【问题讨论】:

    标签: http nginx post https production


    【解决方案1】:

    你最好改变你的代码,但作为一个快速而肮脏的黑客,你可以尝试

    server {
        ...
        if ($request_method = POST) {
            rewrite ^ /api$request_uri last;
        }
        location / {
            # your default location config here
        }
        location /api/ {
            proxy_pass http://127.0.0.1:5000/;
        }
    }
    

    NGINX 配置不是一种编程语言,它使用自己的语法并且是声明性的而不是命令性的,改变 nginx 指令的顺序(除了来自ngx_http_rewrite_module 的指令)通常没有区别。

    【讨论】:

    • 谢谢,您是否有具体原因建议我最好更改代码?
    • 只是设计考虑。而且这种解决方法几乎不可能将任何其他网络应用添加到您的域(如果您将来突然需要它)。
    猜你喜欢
    • 2015-03-16
    • 2015-06-28
    • 2018-03-20
    • 2012-05-04
    • 2019-05-05
    • 2013-04-28
    • 2021-05-29
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多