前言
使用
nginx
避免不了配置虚拟主机,刚开始,配置虚拟主机时放置到nginx
配置文件夹下的vhost
文件夹中,每次添加虚拟主机需要复制一份相关的配置文件到新的配置文件中。但是,作为一个程序员,能有多懒,自然有多懒。所以我把 配置文件分成几个部分。用的时候直接引入,这样每个配置只有几行必须的配置。其他公共部分都是分成块放置到指定位置,这样简洁多了。
支持跨域的 nginx配置块 cross.conf
# 跨域设置
# add_header 'Content-Type' "text/html;charset=utf-8";
# 我是用的是nginx自带变量,代表所有域名都可以跨域到这个服务中,不安全,这里需要按照自己的业务配置。
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,HEAD,PUT,DELETE';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Expose-Headers' 'Authorization';
# 我用的是俩小时过期,可以自定义 单位 秒
add_header 'Access-Control-Max-Age' 7200;
# add_header 'Access-Control-Allow-Headers' 'X-Data-Type,X-Auth-Token,X-token,*';
# 这里是浏览器检测支不支持跨域时用的请求方法,直接返回 204 不需要返回响应体,没有配置的时候,服务器会交给PHP处理。
if ( $request_method = 'OPTIONS' ) {
return 204;
}
对应版本的 PHP 块 php.conf
我用到 多个PHP同时运行,所以配置多个 PHP块,根据自己需要自己修改即可
# 这个是开启 PHP_PATH 的
location ~ \.php.*?$ {
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
# 下面是我对应PHP版本 监听的端口号,
fastcgi_pass 127.0.0.1:20073;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
# 没有PHP_PATH的版本
location ~ \.php$ {
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_pass 127.0.0.1:20073;
fastcgi_index index.php;
include fastcgi_params;
}
Laravel框架 配置块 laravel.conf
# 优雅的URL
location / {
try_files $uri $uri/ /index.php?$query_string;
}
phalcon框架 配置块 phalcon.conf
location / {
#try_files $uri $uri/ /index.php?_url=$uri&$args;
# 使用下面这个需要对 router服务配置下URL来源 默认使用上面的配置。
try_files $uri $uri/ /index.php?$args;
}
TP框架 tp.conf
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
}
}
https ssl.conf
listen 443;
ssl_prefer_server_ciphers on;
# 配置自己的路径
ssl_certificate /web/ssl/host.cer;
# 配置自己的路径
ssl_certificate_key /web/ssl/host.key;
# 配置自己的路径
ssl_dhparam /web/ssl/dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 60m;
# 下面这行代表 多长时间内让浏览器自动将 http 转为 https 根据自己业务调整吧
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
ssl_ciphers HIGH:!aNULL:!MD5;
PS
暂时弄上面的几个块吧,如果有以后会添加。
配置一个 laravel 项目
server {
server_name x-ac.cn;
root '网站路径';
index index.html index.php;
listen 80;
# 支持https
include ssl.conf;
# 优雅URL
include laravel.conf;
# 添加PHP支持
include php.conf;
}
配置就上面几行,非常简单明了。
这里注意下 相对的配置文件的位置,配置文件相对的位置是
nginx
安装目录conf
文件夹
评论已关闭