需求:
两个域名想指向同一个网站ip;
解决:
- 如果不需要https的证书访问,其实不需要配置,在域名解析中,分别添加同一个ip即可,通过dns解析,映射到同一个网站上;
- 如果需要https访问,就需要配置一下443端口了;
- 首先申请一下ssl证书,选择nginx部署;
- 多个域名只需要,添加sever配置既可;
在http{}中新增server配置;
原有server
server {
listen 80 default_server;
server_name www.**.cn;
root /usr/share/nginx/html;
}
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
server_name cloud.***.com;
ssl_certificate cloud.***.com_bundle.crt;
ssl_certificate_key cloud.***.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
原有server监控了80和443端口,原样复制一份,替换域名和证书既可;
重启服务命令:
service nginx restart
如果报错,可以使用命令查询详情:
service nginx status && journalctl -xe
之前因为配置错误,提示了一些信息;
安提示信息,修改后就没事了
如果觉得复制在一个文件中太复杂,可以考虑每一个域名单独写一个文件中;
在http{}中 添加一行代码,加载文件夹下所有配置;
然后编写一个域名为文件名的配置文件;将证书信息也放到文件夹内;
配置文件内输入之前复制的配置信息;
server {
listen 80;
server_name www.***.cn;
root /usr/share/nginx/html;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl;
server_name www.***.cn;
root /usr/share/nginx/html;
autoindex on;
ssl_certificate conf.d/1_www.***.cn_bundle.crt;
ssl_certificate_key conf.d/2_www.***.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
这样在有多个域名时,nginx.conf不会写的太复杂;比较清晰;