我希望能够将请求重定向到Nginx,从可能的选项列表中随机输入。例如,我希望将对example.com/entryA的请求重定向到以下之一:
example.com/entryA
redirect.com/1 redirect.com/2 redirect.com/3
我知道这是可能的代理通行证和一个进程,实现这种逻辑,但我觉得这是矫枉过正。这是可能的Nginx没有过于复杂的事情?
x8goxv8g1#
似乎最简单的方法是使用安装了Lua的Nginx示例(我使用了https://github.com/fabiocicerchia/nginx-lua)
http { server { listen 80; server_name example.com; location /entryA { content_by_lua_block { local redirects = { "http://redirect.com/1", "http://redirect.com/2", "http://redirect.com/3", } local random_url = redirects[math.random(1, #redirects)] ngx.redirect(random_url) } } } }
$ curl http://localhost:80/entryA -v * Trying 127.0.0.1:80... * Connected to localhost (127.0.0.1) port 80 (#0) > GET /entryA HTTP/1.1 > Host: localhost > User-Agent: curl/7.83.1 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 302 Moved Temporarily < Server: nginx/1.23.3 < Date: Sat, 01 Apr 2023 03:57:33 GMT < Content-Type: text/html < Content-Length: 145 < Connection: keep-alive < Location: http://redirect.com/3 < <html> <head><title>302 Found</title></head> <body> <center><h1>302 Found</h1></center> <hr><center>nginx/1.23.3</center> </body> </html> * Connection #0 to host localhost left intact
1条答案
按热度按时间x8goxv8g1#
似乎最简单的方法是使用安装了Lua的Nginx示例(我使用了https://github.com/fabiocicerchia/nginx-lua)