我们拿阿里云的ECS云服务器CentOS7+来举例:
1、修改nginx默认的配置文件:
以 YUM 安装的 Nginx 为例:
1.执行命令 vi /etc/nginx/nginx.conf
编辑 Nginx 的配置文件,将默认的server {...}
配置修改为以下内容:
server {
listen 80 default_server;
server_name www.123.com;
root /home/web1;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50.xhtml;
location = /50x.html {
}
}
server {
server_name www.abc.com;
root /home/web2;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
- 访问 www.123.com 时,跳转到 /home/web1 目录。
- 访问 www.abc.com 时,跳转到 /home/web2 目录。
2.执行命令 nginx -s reload
重启 Nginx 服务。
其他方式也可以直接看阿里云教程:https://help.aliyun.com/knowledge_detail/41091.html?spm=5176.11065259.1996646101.searchclickresult.4b2b44e3xqAmBg
2、添加自定义的配置文件:
- 远程连接并登录到 Linux 实例。
- 执行命令
cd /etc/nginx/conf.d
打开 Nginx 服务配置文件目录。 - 执行命令
vi 您要创建的域名.conf
创建域名规则配置文件,如示例中的vi www.server110.com.conf
。 - 输入
i
编辑新建的配置文件:
- 为每一个域名建立一个单独的配置文件时输入以下内容:
server
{
listen 80; #监听端口设为 80。
server_name www.server110.com; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /home/www/server110.com; #指定网站根目录。
include location.conf; #当您需要调用其他配置文件时才粘贴此项,如无需要,请删除此项。
}
- 将多个域名规则写进一个共同的配置文件时输入以下内容:
server
{
listen 80; #监听端口设为 80。
server_name www.server110.com; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /home/www/server110.com; #指定网站根目录。
include location.conf; #当您需要调用其他配置文件时才粘贴此项,如无需要,请删除此项。
}
server
{
listen 80; #监听端口设为 80。
server_name msn.server111.com; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /home/www/msn.server110.com; #指定网站根目录。
include location.conf; #当您需要调用其他配置文件时才粘贴此项,如无需要,请删除此项。
}
为无 WWW 前缀的域名配置规则并加 301 跳转时输入以下内容:
server
{
listen 80;
server_name server110.com;
rewrite ^/(.*) http://www.server110.com/$1 permanent;
}
需要为域名添加 404 提示时输入以下内容:
server
{
listen 80; #监听端口设为 80。
server_name www.server110.com; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /home/www/server110.com; #指定网站根目录。
include location.conf; #当您需要调用其他配置文件时才粘贴此项,如无需要,请删除此项。
error_page 404 /404.html;
}
- 按 Esc 退出编辑并输入
:wq
保存退出。 - 执行命令
nginx -t
检查配置是否有误,并按照报错提示修复错误。 - 执行命令
service nginx restart
重启 Nginx 服务。 - 执行命令
service nginx reload
重新载入 Nginx 服务。
那么是否只需要上述操作就可以了呢,如果是php或者静态的html,是完全没问题的,但我们的Spring Boot项目可能一个项目一个端口,那在此基础上还需要修改一下代码:
upstream xx{ #配置upstream节点,这里节点名为“xx”
server 116.255.111.111:8080;
}
server{
listen 80;
server_name www.xxx.xx; #这里配置nginx需要代理的域名
location / {
proxy_pass http://xx; #指定反向代理为上面配置的那个upstream节点“xx”
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我的配置:/etc/nginx/conf.d/domain.conf
upstream resumehubServer{
server localhost:8080;
}
server
{
listen 80; #监听端口设为 80。
server_name www.resumehub.cn; #绑定您的域名。
index index.htm index.html index.php; #指定默认文件。
root /opt/resume; #指定网站根目录。
location / {
proxy_pass http://resumehubServer; #指定反向代理为上面配置的那个upstream节点“xx”
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
之所以在/etc/nginx/conf.d/目录下的文件都可以域名映射,是因为在/etc/nginx/nginx.conf文件中include了这个目录下的所有conf文件
上面的upstream指定当前服务器部署的web服务的端口。