Maison  >  Questions et réponses  >  le corps du texte

proxy inverse nginx et ajouter un répertoire

Par exemple, je souhaite accéder à 127.0.0.1:9000 via 127.0.0.1/play/
Ma configuration actuelle est la suivante :

location / {
        root   F:\Personal\ck;
        index  index.html;
}
location ~ ^/play/ {
        proxy_pass   http://127.0.0.1:9000;
        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_redirect off;
}

Lorsque j'ai effectivement accédé à 127.0.0.1/play/, il a accédé à 127.0.0.1:9000/play/. N'a-t-il pas accédé directement au port 9000, mais a-t-il mis le nom du répertoire à la fin ?

天蓬老师天蓬老师2713 Il y a quelques jours378

répondre à tous(2)je répondrai

  • 阿神

    阿神2017-05-16 17:23:03

    Parce que vous avez demandé /play/ et que cette requête a été transmise à http://127.0.0.1:9000. Le chemin de cette requête sera également transmis.

    Ce que vous voulez peut devenir réalité,

    location ~ ^/play(/?)(.*){
        proxy_pass http://127.0.0.1:9000/$;
    }

    La signification de ce code est de transmettre la requête /play/xx à http://127.0.0.1:9000/xx

    Une meilleure façon

    location /play {
            proxy_pass   http://127.0.0.1:9000/;
    }

    Faites attention au '/' à la fin

    Regardez ici
    http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

    répondre
    0
  • 滿天的星座

    滿天的星座2017-05-16 17:23:03

    Étant donné que proxy_pass n'est qu'un proxy inverse, il ne peut pas réécrire les règles d'URL. Il modifie uniquement le nom d'hôte.
    Si vous souhaitez supprimer la dernière chose, vous devez utiliser la réécriture

    location ~^/play/ {
        proxy_pass    http://127.0.0.1:9000;
        rewrite       "^/play(.*)$"  break;
        ...
        }

    répondre
    0
  • Annulerrépondre