redirect - Nginx:重定向短 URL 的服务器名称和子域条件

标签 redirect nginx short-url

我想根据服务器名称有条件地重定向,但我重定向到的位置也取决于子域。例如,这是我的基本配置

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name company.com compa.ny;
    ssl on;
    ssl_client_certificate /etc/ssl/certs/godaddy_CA.crt;
    ssl_certificate /etc/ssl/certs/wildcard.company.com.crt;
    ssl_certificate_key /etc/ssl/private/wildcard.company.com.key;
    ssl_prefer_server_ciphers on;
    root /var/www/company;
    access_log /var/log/nginx/nginx.access.log;
    error_log /var/log/nginx/nginx.error.log;
    client_max_body_size 8M;
    location ^~ /application {
        proxy_set_header HOST $http_host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://127.0.0.1:8080;
    }
}

我想要查找短 url 主机“compa.ny”并重定向到“company.com/shortUrldRedirector”的东西,我还想要包含子域,所以在 dev 或 qa 中这将正常工作:

https://compa.ny/abc123 -> https://company.com/shortUrldRedirector/abc123

and

https://dev.compa.ny/abc123 -> https://dev.company.com/shortUrldRedirector/abc123

我看到有一个 $server_name 配置变量,但我如何完成上述关于子域的重定向?

最佳答案

我会像这样使用 map 构造:

map $http_host $long_domain {
    default      company.com;
    dev.compa.ny dev.company.com;
    compa.ny     company.com;
}

server {
    ...
    return 301 https://$long_domain/shortUrldRedirector$request_uri;
}

关于redirect - Nginx:重定向短 URL 的服务器名称和子域条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408916/

相关文章:

php - 重定向到外部 url 但发送自定义 POST 参数

Objective-C 尝试从短网址下载 PDF

google-app-engine - 使用 Google App Engine 生成带有实体键的短 URL

python - URL重定向问题

asp.net - 登录后跳转到上一页

php - redirect() 函数不适用于 CodeIgniter 中的外部 URL

javascript - SailsJS - 创建版本化 API,无需蓝图

nginx - 使用 HTTPS Web 服务在 Ingress 上获取 ERR_TOO_MANY_REDIRECTS

http - 如何用nginx处理多个ssl服务器

firebase - 如果 url 包含 '#',如何使用 google firebase 动态链接缩短 url