Centos8 下nginx 安装与代理docker部署的Vue项目+常见错误排错

目录

一、安装Centos8下安装Nginx

二、yum 安装的Nginx 默认文件位置

三、docker 部署Vue前段代码,做proxy示例(http)

四、配置nginx.conf 与解决问题

 


一、安装Centos8下安装Nginx

sudo yum -y install nginx
sudo systemctl start nginx
ps -ef | grep nginx

查看默认安装位置

 设置nginx开机自启动

systemctl enable nginx.service

 设置防火墙

允许http通信

sudo firewall-cmd --permanent --zone=public --add-service=http

允许https通信

sudo firewall-cmd --permanent --zone=public --add-service=https

重启防火墙

sudo firewall-cmd --reload

二、yum 安装的Nginx 默认文件位置

/usr/sbin/nginx
/etc/nginx

其中/etc/nginx下配置有nginx.conf

常用配置nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
 server {
        listen       port;
        server_name  ip;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location ^~ /api/ {
	    add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods *;
            add_header Access-Control-Allow-Headers *;
            add_header Access-Control-Request-Headers *;
            proxy_pass ip:port;
        }
        location ^~ /connect/ {
	    add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Credentials 'true';
            add_header Access-Control-Allow-Methods *;
            add_header Access-Control-Allow-Headers *;
            add_header Access-Control-Request-Headers *;
            proxy_pass ip:port;
        }
        location / {
            proxy_pass ip:port;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }


}

访问日志与报错日志配置在/var/log/nginx

三、docker 部署Vue前段代码,做proxy示例(http)

1.将npm run build 后的dist文件夹上传至服务器/home下

2./home目录下编写dockerfile

# 设置基础镜像
FROM nginx
# 定义作者
MAINTAINER xxx
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY dist/  /usr/share/nginx/html/
RUN echo 'echo init ok!!'

3.制作镜像

docker build -t demo_vue:v1 .

4.启动容器

docker run -d -p 8001:80 --name demovue demovue:v1

5.查看容器状态

docker ps -a

6 .如果容器关闭,查看日志

docker logs [容器名] --tail -行数

7.访问前端页面

8.访问不了页面,配置防火墙开启端口,记得重启防火墙

四、配置nginx.conf 与解决问题

1.配置nginx.conf向上查看默认配置部分nginx.conf中的server配置,配置listen与location,重启nginx

 

2.开放listen配置的端口

(1)查看对外开放的端口状态
查询已开放的端口 netstat -anp
查询指定端口是否已开 firewall-cmd --query-port=666/tcp
提示 yes,表示开启;no表示未开启。

(2)添加指定需要开放的端口:
firewall-cmd --add-port=123/tcp --permanent

(3)重启防火墙
查看防火墙状态 systemctl status firewalld
开启防火墙 systemctl start firewalld  
关闭防火墙 systemctl stop firewalld
开启防火墙 service firewalld start 
若遇到无法开启
先用:systemctl unmask firewalld.service 
然后:systemctl start firewalld.service

3.如果启动nginx出现

Failed to parse PID from file /run/nginx.pid: Invalid argument

因为nginx读取出现错误,执行下列命令

 mkdir -p /etc/systemd/system/nginx.service.d
 printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" >/etc/systemd/system/nginx.service.d /override.conf
 systemctl daemon-reload
 systemctl restart nginx.service
 service nginx status

4.Nginx 启动报 [emerg] bind() to 0.0.0.0:XXXX failed (13: Permission denied)

原因是1024以下端口启动时需要root权限,所以sudo nginx即可。

第二种:端口大于1024的情况:

这种情况,需要如下操作:

首先,查看http允许访问的端口:

semanage port -l | grep http_port_t

[root@localhost home]# ​semanage  port -l | grep http_port_t
http_port_t                    tcp      8833, 44378, 8001, 8822, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988

其次,将要启动的端口加入到如上端口列表中

semanage port -a -t http_port_t  -p tcp 8833

5.nginx配置报错:connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream

因为服务器上用的是http,所以需要加上下面一段代码

setsebool -P httpd_can_network_connect 1

6.nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

端口被占用,可能是因为多次重启nginx,错误导致进程没结束

ps -A | grep nginx
kill -9 pidxxx

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值