🌺【服务器】使用域名访问服务器的IP地址
【前提】服务器设置端口
操作步骤:
- 查看IP地址
- 点击管理-->查看账号+密码
- 比如:设置端口-->安全组-->添加规则-->tcp+1002【端口号根据自己的需要进行设置】
1. 查看IP地址:端口
2. 管理面板:查看账号+密码
3. 设置端口
🌻1. 域名解析服务器IP
🌼2. 绑定域名方式一:常用
🌷2.1 阿里云领取免费SSL证书
注意:该方式需要手动修改nginx配置文件
1. 打开阿里云->搜索数字证书管理服务->购买SSL免费证书
2. 创建SSL免费证书
3. 域名添加解析【在阿里云购买的域名会自动添加DNS解析】->创建证书文件夹,将Nginx下载到文件夹中,解压即可。
1. 打开阿里云->搜索数字证书管理服务->购买SSL免费证书
购买SSL免费证书
2. 创建SSL免费证书
3. 域名添加解析【在阿里云购买的域名会自动添加DNS解析】,其他网站购买的域名需要手动添加下域名解析【添加主机记录、记录类型、记录值】
创建证书文件夹,将Nginx下载到文件夹中,解压即可。
🌷2.2 修改Nginx配置文件
(1)打开Xftp和Xshell 7
打开Xftp和Xshell 7,【服务器】Xshell与Xftp软件的使用指南-CSDN博客
(2)Xshell 7安装Nginx环境
以下是在linux系统中安装Nginx的步骤:
查看服务器属于哪个操作系统
cat /etc/os-release
安装 yum
: 如果你确定你的系统应该支持 yum
,但它没有安装,你可以尝试安装它。使用以下命令:
sudo dnf install yum
①:更新系统软件包
centos:
sudo yum update
ubuntu:
sudo apt update
②:安装EPEL存储库
centos:
sudo yum install epel-release
ubuntu略过这步
③:安装Nginx
centos:
sudo yum install nginx
ubuntu:
sudo apt install nginx
④:启动Nginx服务
sudo systemctl start nginx
⑤:设置Nginx服务自启动:
sudo systemctl enable nginx
⑥:验证Nginx是否运行:
sudo systemctl status nginx
如果一切正常,输出应该是“Active: active (running)”或者类似的信息。
⑦:安装vim编辑器:
centos:
yum install vim
ubuntu:
apt install vim
打开Xftp,连接进入找到nginx并进入,将下载的两个ssl文件copy进去。
🍀a.【nginx.conf配置文件】
⑧:修改nginx.conf配置文件
#进入nginx cd /etc/nginx/
查看里面有没有nginx.conf文件
ls
centos:
vim nginx.conf
ubuntu:
cd /etc/nginx/sites-available/your文件
替换代码 按键盘上的a,进入编辑模式
a
用键盘上的↑↓← →键移动光标!
将上图红框里的代码删掉,换成下面的代码
请将域名换成你们自己的域名,SSL证书也换成你们自己的
proxy_buffering off; upstream chatgpt-web { server 127.0.0.1:1002 weight=1;# 1002是端口号 } server { listen 80; server_name www.替换的域名 替换的域名; return 301 https://www.域名$request_uri; # 上面的return语句和下面的location语句二选一即可 #location / { # rewrite ^(.*)$ https://www.替换的域名; #} } server { listen 443 ssl; server_name www.替换的域名; ssl_certificate /etc/nginx/替换的SSL证书.pem; ssl_certificate_key /etc/nginx/替换的SSL证书秘钥.key; location / { proxy_pass http://chatgpt-web; } }
源码分析:
让我们逐行分析这段Nginx配置文件:
proxy_buffering off;
关闭代理缓冲,即禁用对上游服务器响应的缓冲。upstream chatgpt-web { ... }
: 定义一个名为chatgpt-web
的上游服务器,指向本地IP为 127.0.0.1,端口为 1002。weight=1
表示权重为1,即该服务器被选中的概率为1。server { ... }
: 第一个server
块,监听端口 80(HTTP请求):
server_name www.替换的域名 替换的域名;
: 指定服务器名,这里似乎有一处错误,应该替换为实际的域名。return 301 https://www.sarpro.cn$request_uri;
: 所有HTTP请求都将被重定向到相同的URL,但使用 HTTPS 协议。下面注释的部分是另一种实现重定向的方式,通过rewrite
语句。
server { ... }
: 第二个server
块,监听端口 443(HTTPS请求):
server_name www.替换的域名;
: 指定服务器名,同样应该替换为实际的域名。ssl_certificate
和ssl_certificate_key
: 分别指定 SSL 证书和私钥的路径。location / { ... }
: 针对所有请求的位置块,通过proxy_pass
将请求代理到之前定义的上游服务器chatgpt-web
。总体而言,这个配置文件的目标是将所有对
www.sarpro.cn
的请求通过 HTTPS 代理到本地的 1002 端口上游服务器。
上述可替换语句的区别
rewrite ^(.*)$ https://www.sarpro.cn;
和return 301 https://www.sarpro.cn$request_uri;
这两个语句在Nginx配置中执行的是重定向,但它们的行为略有不同:
rewrite ^(.*)$ https://www.sarpro.cn;
- 这个语句使用
rewrite
指令将所有的请求重写到https://www.sarpro.cn
。这意味着无论原始请求的路径是什么,都会被重写为https://www.sarpro.cn
。例如,http://sarpro.cn/some/path
会被重写为https://www.sarpro.cn
,丢失了原始路径信息。
return 301 https://www.sarpro.cn$request_uri;
- 这个语句使用
return
指令执行一个永久性(301)重定向,并保留了原始请求的路径信息。$ request_uri
是Nginx变量,它包含了原始请求中的URI(路径和查询字符串)。因此,这个语句会将请求重定向到https://www.sarpro.cn
,但保留了原始请求中的路径信息。例如,http://sarpro.cn/some/path
会被重定向为https://www.sarpro.cn/some/path
。
鼠标中间粘贴 修改完,按ESC键保存并退出编辑模式
然后输入命令,敲回车
:wq!
检查
nginx -t
出现这个即成功
执行这个脚本
systemctl start nginx
systemctl status nginx
当出现active (running)… 即说明安装成功
然后再执行这条命令(视频没讲,这是新加进去的,必须要输入这个条命令在输入下面的命令)
systemctl enable docker
如果不想后续网站打不开,就一定要执行这条命令
再输入
systemctl restart nginx
即可
🍀b. 【不同路径映射不同端口】
要将不同的路径分别映射到不同的端口,比如:将sarpro.cn/chat1连接到当前服务器的1002端口,将sarpro.cn/chat2连接到当前服务器的2023端口
可以在Nginx配置文件中使用
location
块和proxy_pass
指令。以下是一个示例配置:
proxy_buffering off; upstream chatgpt-web-1002 { server 127.0.0.1:1002 weight=1; #修改成自己的端口 } upstream chatgpt-web-2023 { server 127.0.0.1:2023 weight=1; } server { listen 80; server_name www.域名 域名; location / { #必须要有,否则跳转不了 proxy_pass http://chatgpt-web-1002/; #末尾的/有时候必须要有 } location /chat1{ proxy_pass http://chatgpt-web-1002/; } location /chat2 { proxy_pass http://chatgpt-web-2023/; } return 301 https://www.sarpro.cn$request_uri; } server { listen 443 ssl; server_name 域名; ssl_certificate /etc/nginx/XXX.pem; #修改成自己的SSL证书下载的nginx ssl_certificate_key /etc/nginx/XXX.key; #修改成自己的SSL证书下载的nginx location / { proxy_pass http://chatgpt-web-1002/; } location /chat1 { proxy_pass http://chatgpt-web-1002/; } location /chat2 { proxy_pass http://chatgpt-web-2023/; } }
源码分析
以下是对你提供的Nginx配置的逐行详细分析:
proxy_buffering off;
: 关闭代理缓冲,确保实时性,不缓冲代理的响应。upstream chatgpt-web { ... }
: 定义一个名为chatgpt-web
的上游服务器块,指定了一个服务器127.0.0.1:1002
,并设置了权重为1。upstream chatgpt-web-2023 { ... }
: 定义另一个名为chatgpt-web-2023
的上游服务器块,指定了服务器127.0.0.1:2023
,并同样设置了权重为1。server { ... }
块(监听端口80,即HTTP请求):
listen 80;
: 监听端口80,处理HTTP请求。server_name www.sarpro.cn sarpro.cn;
: 指定了两个服务器名,分别是带有www前缀和没有www前缀的域名。location /chat1 { ... }
和location /chat2 { ... }
: 分别定义了两个位置块,将请求路径为/chat1
的请求代理到chatgpt-web
上游服务器,将路径为/chat2
的请求代理到chatgpt-web-2023
上游服务器。return 301 https://$host$request_uri;
: 对于所有其他请求,执行301重定向到相同的URL,但使用HTTPS协议。
server { ... }
块(监听端口443,即HTTPS请求):
listen 443 ssl;
: 监听端口443,处理HTTPS请求。server_name www.sarpro.cn;
: 指定了服务器名,确保只有带有www前缀的域名能够使用HTTPS访问。ssl_certificate
和ssl_certificate_key
: 分别指定SSL证书和私钥的路径。location /chat1 { ... }
和location /chat2 { ... }
: 同样定义了两个位置块,将请求路径为/chat1
的请求代理到chatgpt-web
上游服务器,将路径为/chat2
的请求代理到chatgpt-web-2023
上游服务器。总体而言,这个配置用于将不同路径的请求代理到不同的上游服务器,并在端口80上执行HTTP到HTTPS的重定向。确保你替换SSL证书和私钥的路径,并确保上游服务器正常运行,即
127.0.0.1:1002
和127.0.0.1:2023
。
- 代码段一:
location / { proxy_pass http://chatgpt-web; }
这个代码段配置了一个反向代理,将所有/
路径的请求代理到名为chatgpt-web
的上游服务器。这意味着Nginx会将这些请求传递给chatgpt-web
,并将响应返回给客户端。这通常用于将请求转发到后端应用程序服务器。 - 代码段二:
location / { return 301 https://www.sarpro.cn$request_uri; }
这个代码段配置了一个HTTP 301永久重定向,将所有/
路径的请求重定向到https://www.sarpro.cn
。这意味着所有请求都将被重定向到指定的URL,客户端将在浏览器中看到301状态码,并从新的URL获取响应。
总体而言,这两段代码的目的完全不同。第一段用于反向代理请求,而第二段用于执行重定向操作。选择使用哪一个取决于你的需求和目标。
重新加载Nginx配置:
检查
nginx -t
出现这个即成功
执行这个脚本
systemctl start nginx
systemctl status nginx
当出现active (running)… 即说明安装成功
然后再执行这条命令(视频没讲,这是新加进去的,必须要输入这个条命令在输入下面的命令)
systemctl enable docker
如果不想后续网站打不开,就一定要执行这条命令
再输入
systemctl restart nginx
即可
🌼2. 绑定域名方式二:宝塔面板
【仅适合使用Docker搭建的网站】
先购买一个域名见章节1.2
🌷2.1 登录宝塔面板绑定域名
【登录宝塔面板】->网站->添加站点
按照红框内容输入自己的域名
设置->配置文件->删除红框内容
红框内容为:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; }
红框删除后加入下面代码,修改成自己的网站占用端口号->点击保存
location / { proxy_pass http://127.0.0.1:端口号; proxy_connect_timeout 12000s; proxy_read_timeout 12000s; proxy_send_timeout 12000s; proxy_buffering off; }
后续登录主机的域名即可访问成功!
【错误记录】
上述步骤没问题则略过
解决方案:点击修复完,刷新页面即可。
🌷2.2 宝塔面板领取免费SSL证书
提示,虽然显示SSL证书到期88天,但是它会自动续签