0

私は Nginx を初めて使用し、このチュートリアルを使用してサーバーをセットアップしました。http://www.anotherwebsite.comのような他のサイトへのリンクを追加すると、自分のページからこのリンクをクリックすると、サーバーからhttp://www.mywebsite.com/http://www.anotherwebsiteに誘導されます。 .com . サーバーは、他のリンクを私の Web サイトのリンクに追加しています。どうすればそれを変更できますか。私はこれらの場所を調べました How to redirect a url in NGINX , Rewrite to pretty links with nginx but I can't make it work. どんな助けでも大歓迎です。ありがとう

server {
    listen          80;
    server_name     $hostname;
    location /static {
        alias /var/www/<app-name>/static;
    }
    error_page   404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location / {
        include         uwsgi_params;
        uwsgi_pass unix:/tmp/uwsgi.sock;
        uwsgi_param UWSGI_PYHOME /var/www/<app-name>/env;
        uwsgi_param UWSGI_CHDIR /var/www/<app-name>/project;
        uwsgi_param UWSGI_MODULE <project-name>.wsgi:application;
    }      
}
4

1 に答える 1

2

投稿されたnginx構成からリダイレクトをまったく行っていません。/static/と/50x.htmlを除くすべてがuwsgiアプリに渡されます

したがって、リダイレクトはuwsgiアプリで行われる必要があります

nginx内からのリダイレクトに関する限り、単純なケースは次のようになります。

location /redirected-path {
  #for 302 redirect
  rewrite ^ http://anotherwebsite.example.com/path-on-other-site redirect; 

   #for 301 redirect
  # rewrite ^ http://anotherwebsite.example.com/path-on-other-site permanent;
}

(より複雑なケースには、より複雑な正規表現が含まれます^

アップデート:

そうです、下のコメントでリンクしたコードから、本当にやりたいのは、出力されたhtmlコードアンカータグのhref値を変更することです。

これを行う適切な場所は、バックエンドコード(つまり、接続しているuwsgiアプリ)です。

次の書き直しでそれを行うことができます:

 location /main {
   rewrite ^/main(.*) http://www.mysite.com$1 permanent;
 }

しかし、これにはサーバーへの追加のラウンドトリップが必要になるという大きな欠点があり、クライアントは次のことを行います。

  1. サーバーへのリクエスト
  2. 他のサーバーへのリダイレクトによる応答
  3. 他のサーバーへのリクエスト
  4. 他のサーバーからの応答

一方、バックエンドコードで変更した場合、手順1と2は不要になります。

潜在的に(接続速度とサーバーの負荷に応じて)顕著な遅延を引き起こすことに加えて。また、サーバーの負荷も増加します。

サーバーの書き換えでそれを行うことは、バックエンドコードにアクセスできない場合を除いて、本当にスキップする必要があるハックです

于 2012-11-08T10:52:25.743 に答える