Linux环境下Nginx反向代理服务器的安装和配置
程序员文章站
2022-07-12 20:53:02
...
第一次装Nginx 折腾了大半天 刚开始装的时候版本出错了 就一直出问题 出错的版本还删不掉
后来迫不得已把系统给重装了 终于给俺装上了
Linux版本:CentOS 7
首先 安装编译工具和库文件:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
然后 安装pcre库 让Nginx支持Rewrite功能:
cd /usr/local/src/ #移动到指定目录
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz #下载PCRE安装包
tar zxvf pcre-8.35.tar.gz #解压安装包
然后进入安装包目录
./configure #编译安装
make && make install #编译安装
最后 安装Nginx:
wget http://nginx.org/download/nginx-1.6.2.tar.gz #下载Nginx压缩包
tar xzf nginx-1.6.2.tar.gz #解压Nginx源码包
cd nginx-1.6.2 #然后进入解压出的目录
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 #编译安装
make #编译安装
make install #编译安装
安装完之后 查看Nginx版本
/usr/local/webserver/nginx/sbin/nginx -v #查看Nginx版本
安装成功
然后是配置在服务器上:
先创建Nginx运行的用户www
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
将/conf/nginx.conf的配置文件替换为以下内容:
根据自己实际情况进行配置 比如CPU核心数和域名
user www www; # 定义Nginx运行的用户和组
worker_processes 1; # 启动进程数 设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log info; # 全局错误日志的位置和日志级别
#错误日志等级:[debug | info | notice | warn | error | crit]
pid /usr/local/webserver/nginx/nginx.pid; # pid文件位置
worker_rlimit_nofile 65535; # 一个Nginx进程打开的最大文件描述符数目
#工作模式及连接数上限
events
{
use epoll; # epoll是多路复用IO的一种方式 可大大提高Nginx性能
worker_connections 65535; # 单个后台进程的最大并发连接数(最大连接数=连接数*进程数)
multi_accept on; # 尽可能多的接受请求
}
# 设定http服务器 利用其反向代理功能提供负载均衡支持
http
{
include mime.types; # 设定mine类型 类型由mine.type文件定义
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';
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; # 请求缓冲
large_client_header_buffers 4 32k; # 请求缓冲
client_max_body_size 8m; # 允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; # 缓冲区代理缓冲用户端请求的最大字节数
sendfile on; # 指定Nginx是否调用sendfile函数输出文件 对于普通应用必须设为on
tcp_nopush on; # 防止网络阻塞
keepalive_timeout 60; # 超时时间 即客户端到服务器端的连接持续有效时间 节省资源
tcp_nodelay on; # 提高数据的实时响应性
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
# 开启gzip压缩 Nginx可以压缩静态资源
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2; # 压缩级别 最大为9 值越小则压缩后比例越小 CPU处理更快
gzip_types text/plain application/x-javascript text/css application/xml; # gzip压缩的文件类型
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
proxy_connect_timeout 90; # Nginx和后端服务器连接超时时间
proxy_send_timeout 90; # 后端服务器数据回传时间
proxy_read_timeout 90; # 连接成功后 后端服务器的响应时间
# proxy_busy_buffers_size 64k; # 高负荷下缓冲区大小
# include vhosts.conf 包含其它配置文件
#server虚拟主机的配置
server
{
listen 80; #监听端口
server_name www.test.com; #域名
index index.html index.htm index.php; # 首页文件名称
root /usr/local/webserver/nginx/html; #服务器默认网站根目录位置
# 默认访问请求
location /
{
root /usr/local/webserver/nginx/html;
index index.html index.htm index.php;
}
# 错误提示页
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root /usr/local/webserver/nginx/html;
}
# PHP脚本请求全部转发到FastCGI处理 使用FastCGI默认配置
location ~ .*\.(php|php5)?$
{
root /root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
# Nginx动静分离 静态页面直接从Nginx发布目录读取
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d; # 用户的浏览器的缓存时间 可节省带宽和环节服务器压力
access_log off;
}
# 查看Nginx状态
location /NginxStatus
{
stub_status on;
}
location ~ .*\.(js|css)?$
{
expires 15d;
access_log off;
}
access_log off;
}
}
配置完了 检查配置文件nginx.conf的正确性:
/usr/local/webserver/nginx/sbin/nginx -t
配置文件正常
一些常用指令:
/usr/local/webserver/nginx/sbin/nginx # 启动服务器
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
查看进程:
ps -ef | grep nginx #查看Nginx进程
结语:
这个配置文件中的域名我折腾了大半天 域名也试过 ip也试过 hosts也设置过 但在浏览器中通过域名就是访问不了
最后用ip访问 成功是成功了 但肯定不能就这么搞 不然域名就白买了
初步估计可能是配置的问题导致域名没有映射成功 时间不早了 明天再看看吧