nginx的安装请参考相关教程,下面直接对配置进行说明。
1、进入srv目录,创建nginx目录,具体目录可自行安排
mkdir -pv ./nginx
2、进入新建的nginx目录,新建domain_com.conf文件(文件编码选择UTF-8格式),名称建议根据域名来定义,内容模板如下
# net core的nginx配置
# http到https的301跳转
#server {
#配置 http到https的301跳转
# listen 80;
# server_name 10.41.3.114;
# return 301 https://$host$request_uri;
#}
server {
# http请求监听 80 端口
listen 80;
server_name www.domain.com; #改为实际的请求地址
charset utf-8;
client_max_body_size 100M; # 限制客户端请求体大小为100MB
# 定义服务器位置
location / {
proxy_pass http://localhost:5000; #改为系统的本机启动地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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;
proxy_set_header X-Forwarded-Port $server_port; #端口
proxy_set_header Cache-Control ''; # 确保不修改或清除 Cache-Control 头
#add_header X-App-Id "0"; //自定义请求头
#proxy_set_header X-Forwarded-Prefix en; #自定义虚拟目录
}
location /upload/ {
alias /yourAppPath/upload/ # 特定静态目录的路径
}
location /templates/ {
alias /yourAppPath/templates/ # 特定静态目录的路径
}
}
server {
# https请求监听 443 端口
listen 443 ssl;
server_name www.domain.com #改为实际的请求地址
ssl_certificate /path/to/your/cert.pem; #证书文件路径
ssl_certificate_key /path/to/your/cert.key; #证书key路径
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 100M; # 限制客户端请求体大小为100MB
#配置静态资源防盗链,不需要可以删除
location ~* \.(jpg|jpeg|png|gif|bmp|webp|ico|css|js)$ {
# 缓存配置(可选,加速访问)
expires 7d;
# 防盗链核心规则
valid_referers *.youDomain.cn; # 信任的域名
# 不允许的外链请求:返回403禁止访问
if ($invalid_referer) {
return 403;
}
}
location / {
proxy_pass http://localhost:5000; #改为系统的本机启动地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
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;
proxy_set_header X-Forwarded-Port $server_port; #端口
proxy_set_header Cache-Control ''; # 确保不修改或清除 Cache-Control 头
#add_header X-App-Id "0"; //自定义请求头
#proxy_set_header X-Forwarded-Prefix en; #自定义虚拟目录
}
location /upload/ {
alias /yourAppPath/upload/ # 特定静态目录的路径
}
location /templates/ {
alias /yourAppPath/templates/ # 特定静态目录的路径
}
}不需要的可自行删除或用#号注释
3、打开nginx的主配置文件,通常路径是:/etc/nginx/nginx.conf,不同版本略有不同,可自行查找,打开nginx.conf文件,在 http 块中添加include如下配置来包含其他配置文件:
http {
include mime.types;
default_type application/octet-stream;
include /srv/nginx/*.conf; #加载/srv/nginx/目录下的所有conf文件
#include /srv/nginx/domain_com.conf; #加载具体文件
.....
#配置日志
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 /srv/www/logs/access.log main;
4、在重新加载或重启Nginx之前,最好检查一下配置文件是否有语法错误,你可以使用以下命令来检查配置文件:
sudo nginx -t
如果输出显示nginx: configuration file /path/to/nginx.conf test is successful,那么配置文件没有问题,可以安全地重新加载或重启Nginx。
如果提示:nginx: [emerg] unknown directive "server" in /etc/nginx/conf.d/XXX.conf:1
通常是由于文件开头存在不可见字符或 BOM(字节顺序标记)导致的,在从 Windows系统或Xftp等工具编辑文件时,可能会不小心加入了这些字符。
可通过vim命令编辑conf文件,然后通过下面命令删除BOM字节。
:set nobomb #按Esc键输入此命令删除BOM标记 :wq #再按按Esc键输入此命令保存退出
如果配置更改后Nginx没有按预期工作,可以查看Nginx的错误日志文件来找原因。日志文件通常位于/var/log/nginx/error.log。你可以使用以下命令查看日志:
sudo tail -f /var/log/nginx/error.log
5、加载新的配置或重启nginx
这是最常用的方法,可以不用完全停止服务即可应用新的配置,使用以下命令:
sudo nginx -s reload
或者,你也可以使用以下命令:
sudo systemctl reload nginx
或者,如果你使用的是service命令:
sudo service nginx reload
重启nginx
如果你发现重新加载配置无效,或者你不确定是否所有的配置都被正确加载,你可以尝试重启Nginx服务:
sudo systemctl restart nginx
或者,如果你使用的是service命令:
sudo service nginx restart
最后输入请求地址检测请求是否按预期的配置工作,如不能正常工作,请检测nginx是否正常启动或查看nginx错误日志来排查。
