nginx 虚拟主机 配置?nginx多个配置文件
nginx 虚拟主机 怎么访问
这里以配置2个站点(2个域名)为例,n个站点可以相应增加调整,假设:
IP地址: 202.55.1.100
域名1 example1.com放在/www/example1
域名2 example2.com放在/www/example2
配置 nginx virtual hosting的基本思路和步骤如下:
把2个站点 example1.com, example2.com放到 nginx可以访问的目录/www/
给每个站点分别创建一个 nginx配置文件 example1.com.conf,example2.com.conf,并把配置文件放到/etc/nginx/vhosts/
然后在/etc/nginx.conf里面加一句 include把步骤2创建的配置文件全部包含进来(用*号)
重启 nginx
具体过程
下面是具体的配置过程:
1、在/etc/nginx下创建 vhosts目录
mkdir/etc/nginx/vhosts
2、在/etc/nginx/vhosts/里创建一个名字为 example1.com.conf的文件,把以下内容拷进去
server{
listen 80;
server_name example1.com www. example1.com;
access_log/www/access_ example1.log main;
location/{
root/www/example1.com;
index index.php index.html index.htm;
}
error_page 500 502 503 504/50x.html;
location=/50x.html{
root/usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location~\.php${
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME/www/example1.com/$fastcgi_script_name;
include fastcgi_params;
}
location~/\.ht{
deny all;
}
}
3、在/etc/nginx/vhosts/里创建一个名字为 example2.com.conf的文件,把以下内容拷进去
server{
listen 80;
server_name example2.com www. example2.com;
access_log/www/access_ example1.log main;
location/{
root/www/example2.com;
index index.php index.html index.htm;
}
error_page 500 502 503 504/50x.html;
location=/50x.html{
root/usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location~\.php${
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME/www/example2.com/$fastcgi_script_name;
include fastcgi_params;
}
location~/\.ht{
deny all;
}
}
4、打开/etc/nginix.conf文件,在相应位置加入 include把以上2个文件包含进来
user nginx;
worker_processes 1;
# main server error log
error_log/var/log/nginx/error.log;
pid/var/run/nginx.pid;
events{
worker_connections 1024;
}
# main server config
http{
include 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”‘;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server{
listen 80;
server_name _;
access_log/var/log/nginx/access.log main;
server_name_in_redirect off;
location/{
root/usr/share/nginx/html;
index index.html;
}
}
#包含所有的虚拟主机的配置文件
include/usr/local/etc/nginx/vhosts/*;
}
5、重启 Nginx
/etc/init.d/nginx restart
Nginx 使用多个.conf文件配置多个虚拟主机server的方法
一般Nginx的配置都默认在/usr/local/etc/nginx/nginx.conf里,但是如果我们有多个虚拟主机需要配置的话,全部写在 nginx.conf下会很臃肿,因此呢, Nginx提供 include包含其他配置文件的方式帮助我们解决这个问题,接下来我们就来看看具体怎么配置
安装好 Nginx后,其默认配置文件不需要更改,它已经帮我们导入了其他配置文件的目录,如上图,最后一句 include servers/*;,意思就是该配置文件包含 nginx.conf的同级目录下的 servers文件夹下所有的文件,这时候我们只需要在 nginx.conf的同级目录下创建一个 servers的文件夹,然后创建自己的.conf文件就行,当然,如果你的配置文件是其他目录,就修改 include后的路径就可以
xxx.conf中的只需要写 server块就行,其实就相当于把这个 server块添加到 nginx.conf中的 http块中
重启 nginx
sudo nginx-s reload
Nginx配置以及热升级
Nginx是一个广泛使用的高性能Web服务器,以其高效的性能和丰富的功能而闻名。相较于Apache,Nginx提供了额外的功能,如代理服务和负载均衡。以下是Nginx的关键特性、配置详解及热升级方法。
### Nginx关键特性
Nginx提供了多种高级功能,包括但不限于:
-**代理服务器**:用于转发请求到其他服务器或负载均衡。
-**负载均衡**:将请求分发到多个服务器,提高性能和可用性。
-**反向代理**:将客户端请求转发到后端服务,隐藏后端架构。
### Nginx配置详解
#### events段
-**worker_connections**:指定单个进程的连接数,配置为1024表示每个进程可以处理1024个并发连接。
#### http段
-**log_format**:定义日志格式,用于日志记录和分析。
-**sendfile**:开启高效传输模式,直接将文件从磁盘传输到网络,无需内存缓存。
-**tcp_nopush**:立即回应TCP请求,减少网络延迟。
-**tcp_nodelay**:对于小数据包直接回应,提高响应速度。
-**keepalive_timeout**:长连接超时时间,优化资源使用。
-**include**:加载其他配置文件,例如mime.types,用于识别文件类型。
-**default_type**:为二进制文件提供默认下载行为。
-**server**:配置虚拟主机,类似于Apache的虚拟主机配置,用于管理多个网站。
###配置虚拟主机
Nginx支持基于端口、IP和域名的虚拟主机配置。
-**基于端口**:配置特定端口的虚拟主机。
-**基于IP**:配置特定IP地址的虚拟主机。
-**基于域名**:通过DNS解析实现域名到IP的映射。
### Location配置
**拒绝访问**
-**基于路径**:使用location规则拒绝特定路径的访问。
-**忽略大小写**:通过修改配置规则中的标志,实现大小写不敏感的访问控制。
###反向代理配置
通过location配置实现反向代理,将请求转发到其他服务,实现负载均衡、缓存等功能。
###配置HTTPS
Nginx支持HTTPS配置,通过主配置文件或自定义虚拟主机配置实现SSL/TLS加密通信。
###热升级Nginx
Nginx支持热升级,允许在不重启服务的情况下升级到新版本。这依赖于源码编译安装,通过以下步骤实现:
-**环境清理**:卸载现有Nginx版本。
-**编译安装旧版本**:下载、编译和安装旧版本Nginx。
-**启动旧版本Nginx**:确保新版本未覆盖旧版本。
-**下载新版本**:升级到新版本。
-**替换旧版本二进制文件**:将新版本的二进制文件替换到相应目录。
-**信号处理**:通过发送USR2信号给旧版本master进程,使其停止处理连接,从而安全地切换到新版本。
热升级的关键在于在新版本启动前发送信号终止旧版本处理中的连接,确保服务的连续性和稳定性。