Tôi đang cố thiết lập một trang web tùy chỉnh đơn giản. Tôi đã xây dựng một máy chủ đơn giản bằng Golang và khung Gin-gonic. Máy chủ Go của tôi như sau:
hàm chính () {
r := gin.Default()
r.GET("/",ServeMainPage)
r.GET("/icons/openlogo-75.png", func(c *gin.Context) {
c.File("favicon.ico")
})
r.GET("/episode/:id", ServeEpisode)
r.GET("styles/style.css", func(c *gin.Context) {
c.File("style/style.css")
})
r.GET("scripts/main.js", func(c *gin.Context) {
c.File("scripts/main.js")
})
r.GET("favicon.ico", func(c *gin.Context) {
c.File("favicon.ico")
})
r.Chạy()
}
func ServeMainPage(c *gin.Context) {
c.File("index.html")
}
func Phục vụEpisode(c *gin.Context) {
EpisodeID := c.Param("id")
filepath := "Tệp âm thanh/" + EpisodeID + ".mp3"
c.File(filepath)
}
Vì quá trình này không thể truy cập cổng 80 (nó chạy trên :8080) và vì tôi đang cố gắng phát triển các kỹ năng của mình nên tôi đã cố gắng thiết lập một máy chủ nginx để hoạt động như một proxy ngược. Máy chủ nginx của tôi có conf sau, đây là mặc định,
http {
##
# Cài đặt cơ bản
##
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
keepalive_timeout 65;
loại_hash_max_size 2048;
# server_token tắt;
# server_name_hash_bucket_size 64;
# máy chủ_tên_trong_chuyển hướng tắt;
bao gồm /etc/nginx/mime.types;
ứng dụng default_type/octet-stream;
##
# Cài đặt SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Bỏ SSLv3, tham khảo: POODLE
bật ssl_prefer_server_ciphers;
##
# Cài đặt ghi nhật ký
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Cài đặt Gzip
##
bật gzip;
# gzip_vary bật;
# gzip_proxied bất kỳ;
# gzip_comp_cấp 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;
##
# Cấu hình máy chủ ảo
##
bao gồm /etc/nginx/conf.d/*.conf;
bao gồm /etc/nginx/sites-enabled/*;
}
và tôi đã làm theo hướng dẫn đây để nó chuyển tiếp mọi thứ tới ứng dụng Golang của tôi bằng cách thêm phần sau vào /etc/nginx/sites-available/ro
và liên kết tượng trưng với /etc/nginx/sites-enabled/ro
.
người phục vụ {
nghe 80;
server_name running-oaks.com;
địa điểm / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Máy chủ $http_host;
proxy_pass "http://127.0.0.1:8080";
}
}
Nếu tôi sử dụng curl trên PC cục bộ của mình để truy cập máy chủ của mình, tôi sẽ nhận được trang index.html mà tôi muốn truy cập vào máy chủ. Lệnh curl của tôi chỉ đơn giản là quăn http://123.123.123.123
, ở đâu 123.123.123.123
được thay thế bằng IP thực của máy chủ từ xa của tôi.
Tuy nhiên, cố gắng truy cập cùng địa chỉ IP này bằng trình duyệt web của tôi chỉ hiển thị cho tôi trang Apache cho Debian mặc định.Tôi đã gỡ cài đặt apache trước khi thiết lập nginx để hy vọng tránh xung đột. Trong cả trường hợp cuộn tròn và trường hợp trình duyệt, tôi có thể thấy rằng ứng dụng Golang của mình đang nhận yêu cầu và trả về trạng thái 200.
Vậy tại sao trình duyệt của tôi cứ hiển thị cho tôi trang debian?
tôi cũng đã thay đổi /var/www/index.html
là trang nginx mặc định, mặc dù điều đó cũng chưa sửa được.