Go localhostಗಾಗಿ ಪ್ರಾಕ್ಸಿಯನ್ನು ಏಕೆ ತಪ್ಪಿಸುತ್ತದೆ
Goನ ಅಂತರ್ನಿರ್ಮಿತ ಲೂಪ್ಬ್ಯಾಕ್ ವಿನಾಯಿತಿಯನ್ನು NO_PROXYಯಿಂದ ಬೇರ್ಪಡಿಸಿ ಮತ್ತು ಪರಿಸರಾಧಾರಿತ ರೂಟಿಂಗ್ ಅನ್ನು ಸ್ಪಷ್ಟ ProxyURL ಜೊತೆ ಹೋಲಿಸಿ.
Goನ ಪರಿಸರಾಧಾರಿತ ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಾರದಲ್ಲಿ localhost ಮತ್ತು ಲೂಪ್ಬ್ಯಾಕ್ IP ಗುರಿಗಳಿಗಾಗಿ ಅಂತರ್ನಿರ್ಮಿತ ವಿನಾಯಿತಿ ಇದೆ. NO_PROXY ಖಾಲಿ ಮಾಡಿದರೆ ಈ ವಿನಾಯಿತಿ ಹೋಗುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ ಸ್ಥಳೀಯ ಪರೀಕ್ಷೆ ನೇರವಾಗಿ ಸಂಪರ್ಕಿಸಬಹುದು, ಆದರೆ ಸಾರ್ವಜನಿಕ ಹೋಸ್ಟ್ಹೆಸರಿಗೆ ಕಳುಹಿಸಿದ ವಿನಂತಿ ನಿರೀಕ್ಷೆಯಂತೆ ಪ್ರಾಕ್ಸಿಯನ್ನು ಬಳಸುತ್ತದೆ.
ನಿಯಮವು ವಿನಂತಿಯ ಗುರಿಗೆ ಸಂಬಂಧಿಸಿದೆ. ಸ್ವಂತ ವಿಳಾಸ 127.0.0.1 ಆಗಿರುವ ಪ್ರಾಕ್ಸಿ ಲಿಸನರ್ ಬಳಸುವುದನ್ನು ಇದು ತಡೆಯುವುದಿಲ್ಲ.
ವಿನಂತಿ ಕಳುಹಿಸದೆ ಆಯ್ಕೆಗಾರವನ್ನು ಪರಿಶೀಲಿಸಿ
package main
import (
"fmt"
"net/http"
"net/url"
)
func main() {
fixed, _ := url.Parse("http://203.0.113.10:8080")
for _, target := range []string{
"http://localhost:8000/",
"http://127.0.0.1:8000/",
"http://example.com/",
} {
request, _ := http.NewRequest("GET", target, nil)
discovered, err := http.ProxyFromEnvironment(request)
explicit, _ := http.ProxyURL(fixed)(request)
fmt.Println(target, discovered, explicit, err)
}
}
ಪರಿಸರದ ಹೋಲಿಕೆಯನ್ನು ನೋಡಲು ಪ್ರಕ್ರಿಯೆಗೆ ಪ್ರಾಕ್ಸಿ ವೇರಿಯಬಲ್ಗಳನ್ನು ಹೊಂದಿಸಿ ಪ್ರೋಗ್ರಾಮ್ ಚಲಾಯಿಸಿ. ಪ್ರೋಗ್ರಾಮ್ ಆಯ್ಕೆಗಾರಗಳನ್ನು ಮಾತ್ರ ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ; ಅದು ದಾಖಲೆಯ ಉದಾಹರಣೆಯ ಪ್ರಾಕ್ಸಿಗೆ ಅಥವಾ ಯಾವುದೇ ಗುರಿಗೆ ಸಂಪರ್ಕಿಸುವುದಿಲ್ಲ.
ಪರಿಸರದಿಂದ ಪತ್ತೆಮಾಡುವುದು ಮತ್ತು ಸ್ಪಷ್ಟ ಆಯ್ಕೆಗಾರವು ವಿಭಿನ್ನ ನೀತಿಗಳು
ProxyFromEnvironment ಗುರಿಯ ಸ್ಕೀಮ್, ಪರಿಸರ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ಬೈಪಾಸ್ ನಿಯಮಗಳನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ; ಇದರಲ್ಲಿ ಲೂಪ್ಬ್ಯಾಕ್ನ ವಿಶೇಷ ನಿರ್ವಹಣೆಯೂ ಸೇರಿದೆ. ProxyURL ಆ ಆಯ್ಕೆಗಾರಕ್ಕೆ ನೀಡಲಾದ ಪ್ರತಿ ವಿನಂತಿಗೂ ಒದಗಿಸಿದ ಪ್ರಾಕ್ಸಿ URL ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ.
ಆದ್ದರಿಂದ ಸ್ಪಷ್ಟ ProxyURL ಹೊಂದಿರುವ ಪ್ರತ್ಯೇಕ ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಸ್ಥಳೀಯ ಗುರಿಯ ವಿನಂತಿಯನ್ನು ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ಕಳುಹಿಸಬಹುದು. ಪ್ರಾಕ್ಸಿಯು ಕೇಳಲಾದ ಗುರಿಯನ್ನು ನ್ಯಾಯಸಮ್ಮತವಾಗಿ ತಲುಪಬಲ್ಲಾಗ ಮಾತ್ರ ಇದು ಉಪಯುಕ್ತ. ದೂರದ ಪ್ರಾಕ್ಸಿಯ localhost ನಿಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ನ localhost ಅಲ್ಲ; ಹೀಗಾಗಿ ಮಾರ್ಗವನ್ನು ಒತ್ತಾಯಿಸುವುದು ತಾನಾಗಿಯೇ ಉಪಯುಕ್ತ ಸಂಪರ್ಕ ಪರೀಕ್ಷೆಯಾಗುವುದಿಲ್ಲ.
ಪ್ರಕ್ರಿಯೆಯು ಪರಿಸರವನ್ನು ಕ್ಯಾಶ್ ಮಾಡುವ ಮೊದಲು ಪರಿಶೀಲಿಸಿ
ಪ್ರಮಾಣಿತ net/httpನ ಪರಿಸರ ಪ್ರಾಕ್ಸಿ ಸಂರಚನೆಯು ಮೊದಲ ಬಳಕೆಯ ಬಳಿಕ ಕ್ಯಾಶ್ ಆಗುತ್ತದೆ. ನಂತರ ಅದೇ ಚಾಲನೆಯಲ್ಲಿರುವ ಪ್ರೋಗ್ರಾಮ್ನಲ್ಲಿ ಪರಿಸರ ವೇರಿಯಬಲ್ ಬದಲಿಸುವುದು ಹೊಸ ಸಂರಚನೆಯ ಪರೀಕ್ಷೆಯನ್ನು ಮರುಕಳಿಸಲು ವಿಶ್ವಾಸಾರ್ಹ ಮಾರ್ಗವಲ್ಲ. ಉದ್ದೇಶಿತ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೊಸ ಪ್ರಕ್ರಿಯೆ ಆರಂಭಿಸಿ ಅಥವಾ ವರ್ತನೆಯನ್ನು ನೀವು ನಿಯಂತ್ರಿಸುವ ಸ್ಪಷ್ಟ ಆಯ್ಕೆಗಾರ ನೀಡಿ.
ಈ ಲೂಪ್ಬ್ಯಾಕ್ ವರ್ತನೆಯು Go 1.27.3ನ ಪ್ರಮಾಣಿತ ಪ್ರಾಕ್ಸಿ ಆಯ್ಕೆಗಾರಕ್ಕೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಇತರ ಭಾಷೆಗಳು ಮತ್ತು HTTP ಕ್ಲೈಂಟ್ಗಳು localhostಗೆ ಬೇರೆ ರೂಟಿಂಗ್ ನಿಯಮಗಳನ್ನು ಬಳಸಬಹುದು.