配置Nginx

这里用Nginx主要是方便反向代理,配置简单,可以把域名端口配置在一起。

我这里的需求配置是:

  1. gogs(git)
  2. 个人博客(halo)
  3. Jenkins(自动化流水线)
  4. 其他主页
  5. 其他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配置的是请求ipnginx默认映射的内容。这里直接屏蔽了。

基本的配置结构如下

# 开始
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的状态。

  1. /usr/sbin/sestatus

4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

  1. vi /etc/selinux/config

  2. #SELINUX=enforcing

  3. SELINUX=disabled

4.3、重启生效。reboot。

评论