Как сделать обратный прокси? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть сервер, написанный на Go.Я хочу написать для него обратный прокси-сервер.Сервер скомпилирован в один двоичный файл.Когда я пытаюсь получить к нему доступ через прокси-сервер, он возвращает только HTML-страницу без привязки к сценариям CSS и JS.Как организовать передачу статических файлов?

package main

import (
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
    "time"
)

func main() {
    mux := http.NewServeMux()
    u1, _ := url.Parse("http://localhost:8080/")
    proxy := httputil.NewSingleHostReverseProxy(u1)
    mux.Handle("/app1", proxy)

    serv := &http.Server{
        Addr:           ":9090",
        ReadTimeout:    10 * time.Second,
        WriteTimeout:   10 * time.Second,
        Handler:        mux,
    }

    err := serv.ListenAndServe()
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }

}

1 Ответ

0 голосов
/ 15 апреля 2019

Написание обратного прокси-сервера - сложная задача.Если вы планируете выставить его в общедоступном Интернете, я предлагаю использовать существующий, например, Caddyserver , который написан на Go и по-прежнему бесплатен, если вы компилируете его самостоятельно вместо использования предварительно скомпилированных двоичных файлов.Исходный код Caddyserver может также дать вам идеи, как реализовать его самостоятельно, если вы все еще хотите реализовать эту идею.

К вашему более конкретному вопросу об обслуживании файлов: Это можетбыть сделано с помощью метода http.ServeFile или проще с помощью методов httprouter ServeFiles или FileServer.Смотри https://github.com/julienschmidt/httprouter#static-files.

...