最初,我有一个带有nginx和Ubuntu20.04端口的网站,端口是80(http)和443(https),网址是https://mysite.cc
(它工作得很好)。
现在,我想用Spring (Docker)设置另一个具有https://new.mysite.cc
URL的站点
如何设置nginx或Spring云的码头?
现在,这两个站点都可以分开工作,但是如何将它们集成到一个Ubuntu服务器中呢?
https://mysite.cc
的nginx配置如下:
server {
server_name mysite.cc;
root /var/www;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.html;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.cc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.cc/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mysite.cc) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
listen [::]:80;
server_name mysite.cc;
return 404; # managed by Certbot
}
新站点与spring对接,配置文件docker-compose.yml
的部分类似于:(现在,它在http://localhost上工作)
version: "3"
services:
newsite-nacos:
image: nacos/nacos-server:1.4.2
container_name: newsite-nacos
restart: always
ports:
- ${NACOS_PORT:-8848}:8848
healthcheck:
test: curl -f http://${NACOS_HOST:-172.20.0.4}:8848/nacos/index.html || exit 1
interval: 6s
timeout: 10s
retries: 10
networks:
newsite-network:
ipv4_address: ${NACOS_HOST:-172.20.0.4}
newsite-backend:
......................
ports:
- ${BACKEND_PORT:-6688}:${BACKEND_PORT:-6688}
networks:
newsite-network:
ipv4_address: ${BACKEND_HOST:-172.20.0.5}
newsite-frontend:
image: ...........
container_name: newsite-frontend
restart: always
environment:
- SERVER_NAME=localhost
- BACKEND_SERVER_HOST=${BACKEND_HOST:-172.20.0.5}
- BACKEND_SERVER_PORT=${BACKEND_PORT:-6688}
- USE_HTTPS=false
ports:
- "80:80"
- "443:443"
networks:
newsite-network:
ipv4_address: 172.20.0.6
networks:
newsite-network:
driver: bridge
ipam:
config:
- subnet: ${SUBNET:-172.20.0.0/16}
发布于 2022-06-11 18:27:04
您可以在nginx配置中设置另一个server
块,使其作为代理工作。
您还应该更改已公开的端口,以避免与第一个应用程序发生冲突。
因此,改变这一点:
ports:
- "80:80"
- "443:443"
例如:
ports:
- "8088:80"
一台机器上的代理通信不需要加密,因为https
配置将在代理(nginx)上设置
然后,服务器块看起来可能类似于以下内容:
server {
server_name new.mysite.cc;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
// the port has to match the exposed one of the spring app
proxy_pass http://127.0.0.1:8088;
proxy_read_timeout 90;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mysite.cc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mysite.cc/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
我没有提到获得TLS证书,因为您成功地在第一个应用程序中做到了这一点,并且过程是相等的。
https://stackoverflow.com/questions/72585572
复制相似问题