2014-11-03 4 views
1

Я использую grunt connect with livereload для среды моего dev.forwarding grunt connect to different url

Я хочу, чтобы иметь возможность обрабатывать api, который находится под/сервером.

Для этого мне нужно направить все вызовы от

http://localhost:9000/server

в

http://www.production-server.com/server

Это хорошо для меня, потому что иногда я хочу до t по сравнению с производственным сервером в режиме dev.

Вот мой текущий подключения конфигурации (Порожденных Yeoman):

connect: { 
 
    options: { 
 
    port: 9000, 
 
    // Change this to '0.0.0.0' to access the server from outside. 
 
    hostname: 'localhost', 
 
    livereload: 35729 
 
    }, 
 
    livereload: { 
 
    options: { 
 
     open: true, 
 
     middleware: function(connect, options, middlewares) { 
 
     return [ 
 
      connect.static('.tmp'), 
 
      connect().use(
 
      '/bower_components', 
 
      connect.static('./bower_components') 
 
     ), 
 
      connect.static(appConfig.app) 
 
     ]; 
 
     } 
 
    } 
 
    }, 
 
    test: { 
 
    options: { 
 
     port: 9001, 
 
     middleware: function(connect) { 
 
     return [ 
 
      connect.static('.tmp'), 
 
      connect.static('test'), 
 
      connect().use(
 
      '/bower_components', 
 
      connect.static('./bower_components') 
 
     ), 
 
      connect.static(appConfig.app) 
 
     ]; 
 
     } 
 
    } 
 
    }, 
 
    dist: { 
 
    options: { 
 
     open: true, 
 
     base: '<%= yeoman.dist %>' 
 
    } 
 
    } 
 
},

+0

Я не знаю, как это сделать в Grunt/connect. Если это возможно, вам может понадобиться написать какое-то специальное промежуточное программное обеспечение, которое выполняет ответ перенаправления '302' ... но я даже не уверен, что это сработает. Проверьте [этот ответ на SO] (http://stackoverflow.com/questions/10737372/node-js-how-to-redirect-incoming-url-requests-by-adding-additional-parameters), и, возможно, вы можете интегрировать что? – jakerella

ответ

8

Я нашел эту проблему и ее решение:

Первое, что нужно сделать, это использовать : grunt-connect-proxy grunt task, чтобы иметь возможность делать прокси (вы можете сделать что-нибудь там). Конфигурация не очевидна, но вы можете найти всю информацию (и пример) здесь: https://www.npmjs.org/package/grunt-connect-proxy

Моя особая проблема была в том, что мой сервер не принимал вызовов, которые не поступали из одного домена, поэтому все, что я сделал, было для добавления свойства «заголовки» в конфигурацию с моим доменным именем. вот как должна выглядеть новая конфигурация:

connect: { 
     options: { 
      port: 9000, 
      // Change this to '0.0.0.0' to access the server from outside. 
      hostname: 'localhost', 
      livereload: 35729 
     }, 
     server: { 
      proxies: [ 
       { 
        context: '/server', 
        host: 'production-server.com', 
        post: 80, 
        changeOrigin: true, 
        headers: { 
         host: 'simple-layout.com' 
        } 
       } 
      ] 
     }, 
     livereload: { 
      options: { 
       open: true, 
       middleware: function (connect) { 
        return [ 
         proxySnippet, 
         connect.static('.tmp'), 
         connect().use(
          '/bower_components', 
          connect.static('./bower_components') 
         ), 
         connect.static(appConfig.app) 
        ]; 
       } 
      } 
     }, 
     test: { 
      options: { 
       port: 9001, 
       middleware: function (connect) { 
        return [ 
         connect.static('.tmp'), 
         connect.static('test'), 
         connect().use(
          '/bower_components', 
          connect.static('./bower_components') 
         ), 
         connect.static(appConfig.app) 
        ]; 
       } 
      } 
     }, 
     dist: { 
      options: { 
       open: true, 
       base: '<%= yeoman.dist %>' 
      } 
     } 
    }, 
+0

@gilamram спасибо людей, вы решили свои проблемы: D –

+0

правильно '{ контекста: '/ сервер', хозяина: 'production-server.com',' ** поста: 80, ** 'changeOrigin: true, headers: { host: 'simple-layout.com' }' ??? – netalex