У меня есть домен (example.com) и субдомен (sub.example.com) оба размещенные на том же сервере. Я хочу проксировать запрос, таким образом, любой файл, который требуют на http://sub.example.com/api/, будут требовать на http://example.com/api/ (наряду с аргументами), Вот мой код nginx из sub.example.com:
location /api {
rewrite /api/(.*) /api/$1 break;
proxy_pass http://example.com/api;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_buffering off;
}
Это не работает на меня. Какой работы:
location ~* ^/api/(.*)$ {
rewrite ^/api/(.*)$ http://example.com/api/$1 last;
}
Править: я забыл говорить, что мое определение сервера содержит еще некоторые правила относительно платформы Yii и парсинга php файлов. Вот полный оператор сервера:
server {
listen 80;
server_name sub.example.com;
access_log /var/log/nginx/sub.example.com.access_log main;
error_log /var/log/nginx/sub.example.com.error_log info;
root /var/www/localhost/htdocs/sub.example.com;
index index.php index.html index.htm default.html default.htm;
# location ~* ^/api/(.*)$ {
# rewrite ^/api/(.*)$ http://example.com/api/$1 last;
# }
location /api {
rewrite /api/(.*) /api/$1 break;
proxy_pass http://example.com/api;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
proxy_redirect off;
proxy_buffering off;
break;
}
location / {
if (-f $request_filename) {
#expires max;
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?/$1 last;
}
}
location /index.php {
include /etc/nginx/fastcgi.conf;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path-to/index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass 127.0.0.1:9000;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi.conf;
fastcgi_index index.php;
fastcgi_intercept_errors on; # for easier debug
}
}
നിങ്ങൾ പ്രാരംഭ അഭ്യർത്ഥന ഹോസ്റ്റ്
തലക്കെട്ട് sub.example.com
മുതൽ example.com
:
proxy_set_header Host $http_host;
അഭ്യർത്ഥന പ്രോക്സി ചെയ്യുന്നതിലൂടെ, ഇത് നിങ്ങളുടെ സജ്ജീകരണത്തെ ആശ്രയിച്ച് sub.example.com
vhost അല്ലെങ്കിൽ സ്ഥിരസ്ഥിതി vhost- ൽ വീഴില്ല, example.com
vhost അല്ല.
ഈ വരി നീക്കംചെയ്യുക.