Nginx安装配置及使用

        “ Nginx安装配置,负载均衡,反向代理及问题集锦

安装配置

1. 下载Nginx
wget http://nginx.org/download/nginx-1.8.1.tar.gz
2. 解压并进入目录操作
1. tar zxvf nginx-1.8.1.tar.gz
2. cd nginx-1.8.1
3. ./configure --prefix=/opt/nginx  # 表示将ngnix安装在/opt/ngnix目录下
4. make & make install
3. ngnix安装成功 /opt/ngnix

4. 验证nginx配置文件是否正确
# 进入nginx安装目录
sbin/nginx -t
5. nginx相关操作
# nginx启动
sbin/nginx
# 停止nginx
sbin/nginx -s stop
# 或者
pkill nginx
# nginx重启
sbin/nginx -s reload
# 查看nginx状态
ps aux|grep nginx
6. 反向代理
# 在nginx.conf里面添加
server {
         listen 8090;# 自己设置一个没有被占用的端口
         server_name localhost;# 默认localhost就可以
         location / {
         proxy_pass http://47.94.245.33:8080;  # 需要跨域的api
         add_header 'Access-Control-Allow-Origin' '*';
         if ($request_method = 'OPTIONS') {  
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            #
            # Custom headers and headers various browsers *should* be OK with but aren't
            #
            add_header 'Access-Control-Allow-Headers' 'X-Requested-By,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            #
            # Tell client that this pre-flight info is valid for 20 days
            #
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        if ($request_method = 'POST') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'X-Requested-By,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        }
        if ($request_method = 'GET') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'X-Requested-By,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        }
        }
    }
# 前端ajax
$.ajax({
    type:'get',
    url:'http://172.16.0.97:8090/car-2.0/service/test/license',
    success:function(data){
        console.log(data);
    },
    error:function(){
        console.log("错误");
    }
})
7. 负载均衡
# nginx.conf
server {
   listen       81;
   server_name  localhost;
   #charset koi8-r;
   location / {
        proxy_pass http://kylin.com;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
        root   html;
   }
}
upstream kylin.com {
   ip_hash;  # 维持session会话持久性,避免频繁刷新页面出现登陆页面进行登陆
   server xxx:7070;server xxx:7070;server xxx:7070;
}

FAQ

1. ./configure 出错
./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library.   You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.
# 解决办法
yum -y install pcre-devel
yum -y install openssl openssl-devel
2. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
# 出现这个错误,说明80端口被占用,杀掉这个进程:
killall -9 nginx
# 进入nginx目录  cd /root/nginx
sbin/nginx  # 执行这个命令,什么都不出现是正常的。
ps aux|grep nginx
出现下图信息证明nginx启动成功,浏览器访问nginx所在ip,即可出现nginx页面

3. nginx启动成功后出现403 Forbidden

# 在nginx根目录下的/conf/nginx.conf文件第一行里面添加
user root;
# 重启nginx
sbin/nginx -s reload
4. [error] open() "/opt/nginx/logs/nginx.pid"
[root@node104 nginx]# sbin/nginx -s reload
nginx: [error] open() "/opt/nginx/logs/nginx.pid" failed (2: No such file or directory)

解决办法:

cd /opt/nginx
sbin/nginx -c conf/nginx.conf
5. ngnix在CentOS-6系统启动报错
5.1 报错1
sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解决办法:

cd /lib64
ln -s libpcre.so.0.0.1 libpcre.so.1
ll /lib64/libpcre*

5.2 报错2
sbin/nginx: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by sbin/nginx)

问题分析:

# 查看版本,发现仅支持到2.12
strings /lib64/libc.so.6 |grep GLIBC

解决办法:

cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build && cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install
# 编译完成后,将libc-2.14.so拷贝到/lib64目录下(本机环境为CentOS-6 64位系统)
cp /opt/glibc-2.14/lib/libc-2.14.so /lib64/
# 软链到
ln -sf /lib64/libc-2.14.so /lib64/libc.so.6

5.3 问题3:

升级glibc到2.14后,出现ssh登陆时出现:

-bash:warning:setlocale:LC_CTYPE:cannot change locale(en_US.UTF-8):Nosuch fileordirectory

解决办法:

cp -r /usr/lib/locale /opt/glibc-2.14/lib/
[root@node98 ~]# ll /opt/glibc-2.14/lib/locale
total 96836
-rw-r--r--. 1 root root 99158576 Dec 14 02:33 locale-archive
-rw-r--r--. 1 root root        0 Dec 14 02:33 locale-archive.tmpl

问题解决。

5.4 报错4:

问题:执行 date命令

[root@xxxxx ~]# date
Mon Dec 17 05:41:43 Local time zone must be set--see zic manual page 2018

问题分析:

就是升级libc.so.6导致的!

GNU中对TZ环境变量的说明中指出,如果TZ没有值,会默认选择时区,具体地址由libc.so.6这个库决定。在升级前,centos的默认时区文件为/etc/localtime。而我新编译的库时,设置了--prefix=/opt/glibc-2.14,导致默认路径为变成了/opt/glibc-2.14/etc/localtime,自然就找不到默认时区了。

解决方案:

ln -sf /etc/localtime /usr/local/glibc-2.14/etc/localtime

测试:

[root@xxxxx ~]# date
Mon Dec 17 13:51:48 CST 2018

问题解决。


更多精彩干货内容,请您关注微信公众号实时查看

内容持续更新中,点击阅读全文获取文章的最新内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要安装配置Nginx,可以按照以下步骤进行操作: 1. 安装Nginx: 在Linux系统中,使用包管理器来安装Nginx。例如,在Ubuntu系统中,执行以下命令: ``` sudo apt update sudo apt install nginx ``` 2. 启动Nginx服务: 安装完成后,可以使用以下命令启动Nginx服务: ``` sudo systemctl start nginx ``` 3. 配置NginxNginx配置文件位于`/etc/nginx/nginx.conf`。您可以使用任何文本编辑器打开该文件进行编辑。 - 更改默认网站根目录: 默认情况下,Nginx的网站根目录位于`/var/www/html`。您可以根据需要更改此设置。在配置文件中找到以下行: ``` root /var/www/html; ``` 将其更改为您希望的目录,例如: ``` root /path/to/your/website; ``` - 设置虚拟主机: 如果您希望在同一服务器上托管多个网站,则可以配置虚拟主机。在配置文件中找到以下行: ``` server { listen 80; server_name your_domain.com; ... } ``` 将`your_domain.com`更改为您要使用的域名,并配置其他相关的设置。 - 配置SSL证书(可选): 如果您希望在Nginx上启用HTTPS,您需要获取并配置SSL证书。您可以通过使用免费的Let's Encrypt证书来实现。可以参考Let's Encrypt的官方文档来获得更详细的指导。 4. 重启Nginx: 在完成配置后,使用以下命令重启Nginx服务以使配置生效: ``` sudo systemctl restart nginx ``` 这些是基本的Nginx安装配置步骤。根据您的需求,还可以进行其他高级配置和优化。希望对您有所帮助!如有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值