解决一个服务器搭建两个网站后,只有一个域名,通过域名访问两个网站
解决一个服务器搭建两个网站后,只有一个域名,通过域名访问两个网站
what: 解决一个服务器搭建两个网站后,只有一个域名,通过域名访问两个网站
when: 10/22
who:JRT
where:anywhere
why:记录
问题描述:
一个服务器搭建两个网站后,只有一个域名,如何通过域名访问两个网站
问题分析:
一个域名只能解析一个服务器ip,不能至端口,利用nginx反向代理完成
问题解决:
#如,现有域名:jrt.top ,服务器是ip:1.1.1.1 ,搭建了两个web,占用端口是8001、8002
1.在服务器后台利用两个子域名都解析至1.1.1.1,如mblog.jrt.top、www.jrt.top ,并在安全组开放8001及8002、80端口
2.搭建nginx
#docker-compose.yaml
version: '3'
services:
nginx:
restart: always
image: nginx:1.11.6-alpine
ports:
- 80:80
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./log:/var/log/nginx
- ./www:/var/www
- /etc/letsencrypt:/etc/letsencrypt
3.启动docker-compose 及进入对应容器
进入配置文件修改,将下文两个server{}放在http{}
4.重启nginx
5.访问页面(mblog.jrt.top或www.jrt.tao)
nginx配置文件修改及重启
# vi /etc/nginx/nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name mblog.jrt.top;
location / {
proxy_pass http://1.1.1.1:8001;
}
}
server {
listen 80;
server_name www.jrt.top;
location / {
proxy_pass http://1.1.1.1:8003;
}
}
#重启nginx
find / -name nginx
/usr/sbin/nginx -s reload
#查证书正确
/usr/sbin/nginx -t
https配置
server {
listen 443 ssl;
server_name mblog.jrt.top;
ssl_certificate /etc/nginx/d/mblog.jrt.top.pem;
ssl_certificate_key /etc/nginx/d/mblog.jrt.top.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://1.1.1.1:9000;
}
}
server {
listen 443 ssl;
server_name www.rt.top;
ssl_certificate /etc/nginx/d/www.jrt.top.pem;
ssl_certificate_key /etc/nginx/d/www.jrt.top.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://1.1.1.1:8003;
}
}