在nginx服务器中打开其他网站链接

在nginx服务器中打开其他网站链接,nginx,Nginx,我是Nginx新手,我已经使用设置了服务器。现在,当我添加到其他站点的链接时,例如,当我在页面上单击此链接时,服务器会指示我访问。服务器正在将另一个链接附加到我的网站链接。我该如何改变这一点。我调查过这些地方 , 但我就是做不到。任何帮助都将不胜感激。谢谢 server { listen 80; server_name $hostname; location /static { alias /var/www/<app-nam

我是Nginx新手,我已经使用设置了服务器。现在,当我添加到其他站点的链接时,例如,当我在页面上单击此链接时,服务器会指示我访问。服务器正在将另一个链接附加到我的网站链接。我该如何改变这一点。我调查过这些地方 , 但我就是做不到。任何帮助都将不胜感激。谢谢

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;
    }      
}
服务器{
听80;
服务器名称$hostname;
位置/静态{
别名/var/www//static;
}
错误\u第404/404.html页;
错误\u第500页502 503 504/50x.html;
location=/50x.html{
root/usr/share/nginx/html;
}
地点/{
包括uwsgi_参数;
uwsgi_pass unix:/tmp/uwsgi.sock;
uwsgi_param uwsgi_PYHOME/var/www//env;
uwsgi_param uwsgi_CHDIR/var/www//project;
uwsgi_参数uwsgi_模块。wsgi:应用程序;
}      
}

您根本没有从发布的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

    除了造成潜在的(取决于连接速度和服务器负载)明显延迟之外。它还将增加您的服务器负载


    使用服务器重写是一种黑客行为,除非你无法访问后端代码,否则你真的应该跳过它。

    你当前的配置是什么样子的?因此,在阅读了有关重定向的内容后,我可以想出这个方法,因此我应该在我的应用程序代码中添加重定向。我会尽力做到的,非常感谢你的帮助。