Articles of 路由

Play framework 2.0中的路由不适用于Nginx下的独立应用程序

我正在使用Play框架2.0。 我正在使用“play dist”创build一个独立的应用程序。 另外我使用Nginx作为前端。 所以,我有Nginx的configuration: location /terra { proxy_pass http://127.0.0.1:9000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 我的路由文件如下所示: GET / controllers.Application.index() GET /projects controllers.Application.projects() 当我开始像一个应用程序 sh start -Dhttp.address=127.0.0.1 -Dhttp.port=9000 要不就 sh start 并转到http:// hostnamehere / terra我得到:未find操作对于请求'GET / terra' 如果我更改GET / controllers.Application.index() GET /terra controllers.Application.index() – 它不起作用。 另外,当我在本地运行我的应用程序并转到“localhost:9000 / WRONG_ROUTING_NAME”时,我得到了同样的错误,但是我可以看到“这些路由已经尝试,按以下顺序:”和方法的列表。 应用程序部署完成后,我看不到相同的列表。 […]

Nginx路由到几个RESTful端点

我想使用Nginx作为HTTP代理服务器。 在后端,我们有三个用Java编写的应用程序,每个应用程序都暴露一个RESTful API。 每个应用程序在API上都有自己的前缀。 例如: APP 1 – URI prefix: /api/admin/** APP 2 – URI prefix: /api/customer/** APP 3 – URI prefix: /api/support/** 在前端,我们有一个SPA页面向这些URI发出请求。 有没有办法告诉Nginx根据URI前缀路由HTTP请求? 提前致谢!

Laravel 5.3,使用api.example.com到example.com/api

如何将api.example.com路由到example.com/api,以便我可以 api.example.com/v1/users 比使用 example.com/api/v1/users. 我正在使用nginx,谢谢。

Nginx的重写规则为AngularJS和html5mode启用

到目前为止,我正在用nginx构buildAngularJS应用程序。 我有中间的铁轨,我带着rewrite ^/(?!assets) / last; 重写规则(重写所有期望以资产开始的东西),到目前为止它正在工作 – 使用rails: server { listen 80; server_name ies.local; root /home/jk/Projects/ies12/webapp/public; # <— be sure to point to 'public'! passenger_enabled on; rails_env development; rewrite ^/(?!assets) / last; } 但到了今天,我离开了铁轨,我需要延长这一规则.. 如果我做了类似的事情 server { listen 80; server_name webapp.local; root /home/jk/Projects/webapp; rewrite_log on; rewrite ^/(?!angular) / last; rewrite ^/(?!angular-ui) / last; } 有webapp […]

Rails子域路由

我正在尝试为pipe理页面设置子域路由。 然而,当使用admin.localhost我能够路由到子域就好了。 当我使用lvh.me我路由到正确的主页,虽然当使用admin.lvh.me我路由到相同的主页,而不是pipe理员login页面。 # config/routes.rb constraints(AdminSubdomain) do constraints subdomain: 'admin' do devise_for :admins devise_scope :admin do authenticated :admin do root to: 'admin_home#index', as: :authenticated_root end unauthenticated do root to: 'devise/sessions#new', as: :unauthenticated_root end end resources :example resources :example end end 其他路由子域参数我试过了 module: "admin", path: "/", constraints: lambda { |r| r.subdomain.split('.')[0] == 'admin' } do […] […]

什么是最有效的方式路由到Azure Blob?

如果我有一个公共的Azure Blob文件,例如https://mystorage.blob.core.windows.net/myblobcontainer/myblobpage.html 如果我想从我自己的域名路由到该页面,我有什么select? 例如,如果我想将mydomain.com/foo/blobpage发送到上面的URL。 我知道这可以在Azure WebSites或CloudServices上使用Web.confg来完成。 如此处所述隐藏Azure Bloburl 还有其他的select吗? 也许更轻量? 我会假设在Azure网站上使用configuration会带来一些开销,也可能是一些nginx代理或更有效的东西。 那么,什么是替代品,他们将如何比较webconfiguration路由的可扩展性?

如何在Nginx上游使用Docker群集DNS /服务名称

我有一个跨4个群集节点(ServiceA)和一个在同一个Swarm上的4个节点上运行的Nginx服务的服务。 Nginx的服务公开/发布端口80和443.所有的服务连接到同一个用户定义的覆盖networking,最重要的是我可以从容器中遏制/ ping服务名称(ServiceA),所以所有的工作到目前为止。 我的问题是如何让Nginx上游使用服务名称? 我读了很多,试着把这个添加到nginx.conf resolver 127.0.0.11 ipv6=off; 但没有帮助,Nginx的服务不会启动。 关于如何获取Nginx的任何想法,请参阅DockernetworkingDNS名称? 这是我的nginx.conf events { worker_connections 4096; } http { include /etc/nginx/conf/*.conf; include /etc/nginx/mime.types; proxy_intercept_errors off; proxy_send_timeout 120; proxy_read_timeout 300; upstream serviceA { ip_hash; server serviceA:8081; } server { listen 80 default_server; resolver 127.0.0.11 ipv6=off; keepalive_timeout 5 5; proxy_buffering off; underscores_in_headers on; location ~ ^/serviceA(?<section>.*) { access_log […]

使用Clojure和Ring的HTTPS请求

我正在使用Ring和Compojure开发Clojure Web API。 API需要能够接受基于指定路由的HTTP和HTTPS请求。 例如: 考虑下面的应用程序路线 : (defroutes app-routes (POST "/route-one" {request :request} (processRequet request)) (POST "/route-two" {request :request} (processRequet request))) 我希望route-one只接受HTTP请求,而route-two只接受HTTPS请求。 这可能吗? 我尝试使用以下设置运行docker : (jetty/run-jetty #'app {:join? false :ssl? true :ssl-port 8443 :keystore "./resources/keystore.jks" :key-password "12345678"}) 这使得API能够接受HTTPS请求,但是并没有阻止对相同路由的HTTP请求。 我也尝试禁用HTTP协议,没有运气: (jetty/run-jetty #'app {:port 5000 :join? false :ssl? true :ssl-port 8443 :keystore "./resources/keystore.jks" :key-password "12345678" :http? false}) […]

在不是域根目录的URL上运行Flask应用程序

我正在将一个Flask应用程序从apache2和mod_wsgi环境移动到Nginx,并且在让url正常工作时遇到了问题。 我想要我的应用程序的根页面出现在,例如http://example.org/myapp/ 我的@ app.route装饰器是例如@app.route('/')为我的应用程序的根( http://example.org/myapp )和@app.route('/subpage')的子页面如http://example.org/myapp/subpage 。 在apache下,所有的“刚刚工作”和我对url_for()调用都产生了完成工作的URLS。 现在我的url_for() URL格式为: href="/subpage" ,它将我发送到域根, http://example.org/subpage而不是我想要的: href="./subpage" ,这会把我带到http://example.org/myapp/subpage 。 对于它的价值,我的Nginxconfiguration中的相关部分是: location /myapp/ { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_pass http://127.0.0.1:8001/; } 我正在用gunicorn服务应用程序。 就目前情况而言,访问http://example.org/myapp/会将我带到我的Flask应用程序的根页面,但所有其他URL都会将我带回域级别: http://example.org/subpage : http://example.org/subpage 。 我曾尝试将APPLICATION_ROOT设置为“/ myapp”,但似乎没有效果。 我在做什么(可怕的)错误?

使用variables时,在nginx上重写URI不起作用

我有这个地图集: map $id $backend_host { default http://primary-host; 1 http://primary-host; 2 http://secondary-host; } 并在以下位置: location / { set $id 1; proxy_pass $backend_host; } location /second/ { set $id 2; proxy_pass $backend_host/; rewrite ^/second(.*)$ $1 break; } 当发布到http://nginx-host/second/some/uri我发现它位于第二个位置子句中,正在重写URI,但是它被代理到主要主机而不是辅助主机。 另一方面,当我设置这样的第二个位置: location /second/ { proxy_pass http://secondary-host/; rewrite ^/second(.*)$ $1 break; } 也就是说,没有使用variables,它工作得很好。 找不到解释该文档的任何内容。