Nginx学习

文章详细介绍了如何使用Nginx进行单个域名转发到本地项目或特定IP,包括带/与不带/的proxy_pass区别。同时,它列出了遇到403Forbidden错误时的常见解决方案,如检查启动用户、配置index文件、调整目录权限和处理SELinux设置。此外,还提及了proxy_pass代理可能导致的403错误及相应配置调整。
摘要由CSDN通过智能技术生成

1 单个域名转发(本地项目):nginx.conf

在这里插入图片描述
在这里插入图片描述
注:可以引入多个config文件

include /www/server/panel/vhost/nginx/*.conf;

多个文件跟上面的代码类似

2 单个域名转发(域名转发单个IP):nginx.conf

server
{
    listen 80;
    server_name zilaishui.fsgyhlw.com;
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #清理缓存规则
	location / {
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header REMOTE-HOST $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		#location 位置带/与不带/ 无影响
		#这里是别的IP  注意这个斜杠是需要的
		#转发要注意带/与不带的区别
       #转发要带/,才能去掉访问的路径,不然多一层目录找不到资源
		proxy_pass http://222.74.86.186:9088/;
	}

 
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

}

3 单个域名做多个IP配置,是根据后缀区分

server {
    listen 80;
    server_name xxxxx.com;

    keepalive_timeout 3600s;
    proxy_read_timeout 3600s;
#    proxy_protocol on;  
    proxy_connect_timeout 60s;
    proxy_send_timeout 500s;
    client_header_buffer_size 512k;
    large_client_header_buffers 4 512k;
    proxy_pass_request_headers      on;
    underscores_in_headers on;

    client_max_body_size 1024m;

    client_body_buffer_size 10m;
    proxy_buffers 4 512k;
    proxy_busy_buffers_size 512k;

#location 位置带/与不带/ 无影响
		#这里是别的IP  注意这个斜杠是需要的
		#转发要注意带/与不带的区别
       #转发要带/,才能去掉访问的路径,不然多一层目录找不到资源
  location /A/ {
    proxy_pass http://1.111.111.111:80/;
  }
#location 位置带/与不带/ 无影响
		#这里是别的IP  注意这个斜杠是需要的
		#转发要注意带/与不带的区别
       #转发要带/,才能去掉访问的路径,不然多一层目录找不到资源
  location /B/ {
    proxy_pass http://1.111.111.111:8000/;
  }
    

}

4 启动本地项目出现 403 forbidden

一、启动用户和nginx工作用户不一致所致
查看nginx的启动用户:打开nginx.conf文件
vi conf/nginx.conf

user nginx;
改为
user root;

二、nginx.conf中缺少index的指定的文件。
查看nginx的配置:打开nginx.conf文件
server {  
	listen       80;  
	server_name  localhost;
	index  index.html;
	root  /opt/html/;
	}

如果在/opt/html/下面没有index.html的时候,会报403 forbidden。
三、权限问题,如果nginx没有操作权限,也会出现403错误。
解决办法:修改/opt/html/目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

chmod -R 777 /opt/html/

四、SELinux设置为开启状态(enabled)的原因。
查看当前selinux的状态。
/usr/sbin/sestatus
将SELINUX=enforcing 修改为 SELINUX=disabled 状态。
vi /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled   #注释之前,替换为这个
重启生效。

5 nginx proxy_pass代理 出现403

proxy_set_header Host $host; 代表转发时不改变请求头“Host”的值。所以转发过去,对方api.dalu.com不识别,所以返回403. 修改配置
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值