这里用Nginx主要是方便反向代理,配置简单,可以把域名、端口配置在一起。
我这里的需求配置是:
- gogs(git)
 - 个人博客(halo)
 - Jenkins(自动化流水线)
 - 其他主页
 - 其他h5游戏
 
基本配置
常规路径:
/etc/nginx/下
/nginx.conf为主配置
/conf.d/下为其他一般会有个default.conf
主配置nginx.conf说明:
user  root; # 操作的用户 一般设置成root开放全部
worker_processes  1; # 工作进程数
error_log  /var/log/nginx/error.log warn; # 错误日志
pid        /var/run/nginx.pid;
events {
    worker_connections  1024; # 一个工作进程最大连接
}
# 主配置开始
http {
    include       /etc/nginx/mime.types; 
    default_type  application/octet-stream;
    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  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on; #开启压缩
		
		#从这里开始配置自己的
		#默认加载conf.d下全部的,这里我自己选择配置
    #include /etc/nginx/conf.d/*.conf;
    
    # 80端口设置
    #include 的方式就是把[配置文件]的内容直接复制到此处
    #所以有[结构]和[顺序]的影响
    include /etc/nginx/conf.d/default.conf;
   #include /etc/nginx/conf.d/game_server.conf;
    include /etc/nginx/conf.d/halo_jw.conf;
    include /etc/nginx/conf.d/gogs.conf;
    include /etc/nginx/conf.d/jenkins.conf;
    include /etc/nginx/conf.d/h5game.conf;# h5游戏
    include /etc/nginx/conf.d/huihuihome.conf; # huihui 主页 
}
default.conf配置的是请求ip时nginx默认映射的内容。这里直接屏蔽了。
基本的配置结构如下
# 开始
server {
   listen 80; # 监听端口
   server_name aaa.bbb.com; # 要映射的域名
   # 以location为开头的指的是定位
   location / { #这个代表根路径(指aaa.bbb.com)
       return 403;# 直接返回403,也可以是400、502...
   }
   location ^~ /dddd{
   # 把请求(aaa.bbb.com/dddd)
   # 直接对应到下边别名的位置
       alias /usr/local/dddd/game/zodiac_card;
   }
   location = /50x.html{
   # 精确匹配到/50x.html
   # 直接返回root指向目标
       root /usr/share/nginx/html;
   }
   #alias与root有区别,alias指向目录为绝对位置,root是相对位置,细节请度娘
}
##配置普通代理
有时我们只需要让域名映射到,服务器对应的一个目标文件夹里的index.html如下:
server {
   listen 80;
   server_name hh.hhhw.xyz; 
   location / {
       root /usr/local/index/hhh;
   }
}
通过不用url名字来识别对应的指向:
server {
   listen 80;
   server_name game.bbb.com; 
   location ^~ /game1 {
       alias /usr/local/ccc/game1;
   }
   location ^~ /game2 {
       alias /usr/local/ccc/game2;
   }
}
这里指解析game.bbb.com后面如果是/game1(game.bbb.com/game1)的话,全部绝对指向到目标文件夹。
这样可以把好几个不同的h5小游戏对应到对应的同一个域名上。
反向代理
服务器对外只暴露80端口,用域名来区分来反向代理到其他端口或文件路径。
比如我的博客反向代理配置halo_jw.conf
# 负载均衡
# 设置一个[名字](blog.hhh.xyz)
# 对应一个[服务地址](server 127.0.0.1:8090)
upstream blog.hhhw.xyz {
    server 127.0.0.1:8090;
}
server {
		
    listen 80; 
    
    server_name www.hhhw.xyz hhhw.xyz blog.hhhw.xyz;
    location / {
    		# 代理
    		proxy_pass http://blog.hhhw.xyz;# 这里时负载均衡的名字
        # 代理设置 请求头等
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}
各种尝试结果还是403的原因
四、SELinux设置为开启状态(enabled)的原因。
4.1、查看当前selinux的状态。
- /usr/sbin/sestatus
 
4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。
- 
vi /etc/selinux/config
 - 
#SELINUX=enforcing
 - 
SELINUX=disabled
 
4.3、重启生效。reboot。
评论