nginx使用过程中的一些问题积累

1、linux服务器,启动多个nginx进行服务代理

假设一台linux服务器代理2套系统,只需要配置2个nginx.conf就可以了。

1)配置第一个nginx实例

打开 /etc/nginx/conf/nginx.conf 文件,找到 listen 参数并修改端口。例如,将第一个实例的HTTP端口改为8080:

server {
    listen 8080;
    ...
}

2)配置第二个nginx实例

复制/etc/nginx/conf/nginx.conf将nginx.conf 改成nginx2.conf,找到listen参数并修改端口。例如,将第二个实例的HTTP端口改为9090:

server {
    listen 9090;
    ...
}

3)启动如上2个实例

①启动第一个实例

/etc/nginx/sbin/nginx -c  /etc/nginx/conf/nginx.conf  -p  /etc/nginx

①启动第二个实例

/etc/nginx/sbin/nginx -c  /etc/nginx/conf/nginx2.conf  -p  /etc/nginx

4)关闭实例

/etc/nginx/sbin/nginx -c  /etc/nginx/conf/nginx2.conf  -p  /etc/nginx -s stop

2、nginx代理前端配置

location / {
	expires 365d;
    root   ../../apps/client-web;
    index  index.html index.htm;
	# 浏览器刷新避免404问题
	try_files $uri $uri/ /index.html;
	add_header 'Access-Control-Allow-Origin' '*';
	if ($request_filename ~ .*\.(html|htm)?$) {
	 add_header Cache-Control "private,no-store,no-cache,must-revalidate,proxy-revalidate";
	}
	if ($request_method = 'OPTIONS') {
	add_header 'Access-Control-Allow-Origin' '*';
	add_header 'Access-Control-Allow-Credentials' 'true';
	add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE,PATCH,OPTIONS';
	add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Range,Range';
	add_header 'Access-Control-Max-Age' 1728000;
	return 204;
	}
}

解析:

1.location / { ... }:这段配置指定了匹配根路径 / 的位置块。即当客户端请求的路径是根路径时,将会按照这个配置处理请求。
2.expires 365d;:设置浏览器缓存的过期时间为365天。这意味着客户端在访问这个位置的资源时,将会缓存这些资源,并在一年后过期。
3.root ../../apps/client-web;:指定了根目录的路径为 …/…/apps/client-web。这意味着 Nginx 将在文件系统中找到请求的文件或目录。
4.index index.html index.htm;:指定默认的索引文件为 index.html 或 index.htm。如果客户端请求的是一个目录,Nginx 将会尝试返回这些文件作为默认页面。
5.try_files $uri $uri/ /index.html;:当请求的文件或目录不存在时,会尝试寻找 u r i 、 uri、 uriuri/,或者最终返回 /index.html,这样可以避免浏览器刷新时出现404错误。
6.add_header 'Access-Control-Allow-Origin' '*';:设置允许跨域请求的来源为任意域名,这允许其他域名的前端页面通过 AJAX 请求访问这个服务。
7.if ($request_filename ~ .*\.(html|htm)?$) { ... }:如果请求的文件名以 .html 或 .htm 结尾,将会添加特定的缓存控制头,以确保浏览器不会缓存这些文件。
8.if ($request_method = 'OPTIONS') { ... }:如果请求方法是 OPTIONS,则设置 CORS 相关的响应头,以允许预检请求(preflight request)通过,并返回状态码 204。

注意事项:

  1. 在使用 if 指令时要小心,因为它可能会影响性能,并且有时候 if 指令在 Nginx 中的使用并不推荐,特别是在高负载情况下。
  2. 确保根目录 …/…/apps/client-web 的权限设置正确,以免出现文件访问权限问题。
  3. 配置中的 CORS 头部设置允许了广泛的请求来源和方法,确保这是你的应用程序设计所需的安全策略。

3、页面点击没链接没问题,刷新页面报404

针对上述情况,只需要在配置里面加下面这行命令就可以了,这行代码在上面配置中有写到。

try_files $uri $uri/ /index.html;
  • 23
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值