尝试使用nginx在Kubernetes中设置api网关。 我试图按照指定服务和版本的path跟单个子域模式。
api.domain.com/service/v0/api/resource/10 -> http://servicev0/api/resource/10
现在忽略版本…
这确实解决了。 location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://theservice; }
使用api.domain / theservice / v0 / location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://$service; }
location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) { resolver 169.254.169.250; proxy_pass http://$service; }
错误 *1 theservice could not be resolved (110: Operation timed out),
还需要重写请求来删除$ service和$ version。
我build议你看看位置格式, 好文章在这里 。 不过,我在答复的底部给了你一个直接的答案。
我的大部分位置都是“位置(修改)(string)”格式,如下所示
location ~* \.(jpg|jpeg|png|gif|css|js)$ {" location = /wp-login.php { location ~* (load_google_fonts|display_gallery_iframe) { location ~ \.(hh|php)$ { location ~* "wp-content\/uploads\/(\d{4,}\/\d{2,}\/.*|galleries\/.*)" {
没有修饰符的唯一位置就是完全匹配的位置
location / { location = /robots.txt { location /favicon.ico {
我怀疑你需要更像这样的东西 – 唯一的变化是在“位置”之后的〜*和空格。 〜*是不区分大小写的正则expression式匹配。
location ~* /(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {