反向代理,免除端口输入 🤔需求描述:
- 已有域名blog.betteryimi.top
- 有公网ip的服务器
- 在服务器的6015端口跑了一个静态web服务
- 使用blog.betteryimi.top不带端口去访问6015的web服务
✨步骤:
-
安装Nginx(如果还没有安装):
sudo apt update sudo apt install nginx
-
配置Nginx以服务静态文件: 首先,创建一个新的Nginx配置文件。
sudo nano /etc/nginx/sites-available/blog.betteryimi.com
在文件中添加以下内容:
server { listen 80; server_name blog.betteryimi.com; location / { proxy_pass http://localhost:6015; 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; } }
-
创建一个符号链接到
sites-enabled
目录:sudo ln -s /etc/nginx/sites-available/blog.betteryimi.com /etc/nginx/sites-enabled/
-
配置静态文件服务: 创建一个新的Nginx配置文件来服务静态文件:
sudo nano /etc/nginx/sites-available/static_files
在文件中添加以下内容:
server { listen 6015; server_name localhost; location / { root /path/to/your/public; index index.html; # 免除.html后缀 try_files $uri $uri.html $uri/ =404; } # 指定自定义404错误页面 error_page 404 /404.html; location = /404.html { root /path/to/your/public; internal; } }
请将
/path/to/your/public
替换为你实际的静态文件目录路径。 -
创建一个符号链接到
sites-enabled
目录:sudo ln -s /etc/nginx/sites-available/static_files /etc/nginx/sites-enabled/
-
测试Nginx配置:
sudo nginx -t
如果配置文件没有错误,你会看到类似以下的输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
-
重新加载Nginx:
sudo systemctl reload nginx
✨为https添加证书,证书可以使用阿里云的个人免费证书,生成后部署,然后443端口开启web服务,配置如下: https_blog_betteryimi_top
server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;
#填写证书绑定的域名
server_name <yourdomain>;
#填写证书文件绝对路径
ssl_certificate cert/<cert-file-name>.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:6015;
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;
}
}
✨http跳转https
server {
listen 80;
#填写证书绑定的域名
server_name blog.betteryimi.top;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
# 这个不写好像也行如果只需要配置一个https的转发?
# location / {
# index index.html index.htm;
# }
# location / {
# proxy_pass https://localhost:6015;
# 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;
# }
}