У меня работает веб-сервер nginx и API-интерфейс golang в качестве бэкэнда.
В данный момент у меня запущено веб-приложение на braurl.se.
Вы можете получить данные в http://braurl.se: 8080 /
Вы можете просмотреть интерфейс в https://braurl.se
У меня проблемы с получением данных из мой бэкэнд, и кажется, что я испортил свою конфигурацию порта
Я хотел бы не выставлять порт 8080 и скорее иметь возможность извлекать данные с помощью braurl.se/api/
Я считаю, что я неправильно делаю, это порт и прокси-сервер в любом из файлов, показанных ниже
Это мои файлы, может кто-нибудь указать мне, где и что я делаю неправильно:
Nginx файл конфигурации:
server {
listen 80;
listen [::]:80;
server_name braurl.se www.braurl.se;
location / {
# This redirs to either www.braurl.se or braurl.se but with https.
rewrite ^ https://$host$request_uri? permanent;
}
#for certbot challenges (renewal process)
location ~ /.well-known/acme-challenge {
allow all;
root /data/letsencrypt;
}
location /api/ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_pass http://goservice:8080;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
}
#https://braurl.se
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name braurl.se;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/braurl.se/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/braurl.se/privkey.pem;
ssl_buffer_size 8k;
ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
ssl_ecdh_curve secp384r1;
ssl_session_tickets off;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
root /usr/share/nginx/html;
index index.html;
# Always try index files, this is for React.
location / {
try_files $uri /index.html;
}
location /api/ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_pass http://goservice:8080;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
}
Docker -создать файл
version: '3.1'
services:
goservice:
build: "."
image: golang
container_name: goservice
expose:
- "80"
ports:
- "8080:8080"
production-nginx-container:
container_name: 'production-nginx-container'
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./production.conf:/etc/nginx/conf.d/default.conf
- ./production-site:/usr/share/nginx/html
- ./dh-param/dhparam-2048.pem:/etc/ssl/certs/dhparam-2048.pem
- /docker-volumes/etc/letsencrypt/live/braurl.se/fullchain.pem:/etc/letsencrypt/live/braurl.se/fullchain.pem
- /docker-volumes/etc/letsencrypt/live/braurl.se/privkey.pem:/etc/letsencrypt/live/braurl.se/privkey.pem
depends_on:
- "goservice"
Dockerfile (golang):
FROM golang:1.12.7-alpine3.10 AS build
# Support CGO and SSL
RUN apk --no-cache add gcc g++ make
RUN apk add git
WORKDIR /go/src/app
COPY . .
RUN go get github.com/gorilla/mux
RUN GOOS=linux go build -ldflags="-s -w" -o ./bin/test ./main.go
FROM alpine:3.10
RUN apk --no-cache add ca-certificates
WORKDIR /usr/bin
COPY --from=build /go/src/app/bin /go/bin
EXPOSE 8080
ENTRYPOINT /go/bin/test --port 8080