我想在将配置上传到服务器之前测试nginx子域。我可以在localhost上测试吗?我试试
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
}
}
server {
listen 80;
server_name sub.localhost;
location / {
proxy_pass http://localhost:8080/sub;
}
}
它不起作用。 Shoulld我改变我的主机文件,以使其工作?此外,在将网站上传到服务器后,我应该更改DNS记录并添加sub.mydomain.com吗?
答案 0 :(得分:20)
是的,将“127.0.0.1 sub.localhost”添加到您的hosts文件中。那个子必须以某种方式解决。这应该有用。
然后,当您准备好上网时,是的,为子域sub添加a或cname记录。
当我使用proxy_pass时,我还包含来自nginx的proxy.conf。 http://wiki.nginx.org/HttpProxyModule
答案 1 :(得分:5)
对于具有自己域名的公共网络服务器,您只需在DNS配置中使用CNAME记录添加Canonical名称:
CNAME * example.com.
完成后,设置你的nginx设置
server_name *.example.com example.com;
在本地设置中,您可以为nginx保留相同的配置,但除非您具有本地DNS设置,否则您必须编辑/ etc / hosts文件并手动添加每个子域。通配符不能在/ etc / hosts文件中工作。
127.0.0.1 abc.example.com def.example.com ghi.example.com
通常建议使用.local作为本地域的命名空间。
答案 2 :(得分:5)
在基于Linux的操作系统中,只需编辑为public class ProductModel {
private int current_page;
private ArrayList<DataModel> data = new ArrayList<>();
public int getCurrent_page() {
return current_page;
}
public void setCurrent_page(int current_page) {
this.current_page = current_page;
}
public ArrayList<DataModel> getData() {
return data;
}
public void setData(ArrayList<DataModel> data) {
this.data = data;
}
private class DataModel{
private int id,price,discount,shop_id,vote_id,vedeo_id,status;
private String name,image,description,discount_type,discount_exp,created_at,updated_at;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getDiscount() {
return discount;
}
public void setDiscount(int discount) {
this.discount = discount;
}
public int getShop_id() {
return shop_id;
}
public void setShop_id(int shop_id) {
this.shop_id = shop_id;
}
public int getVote_id() {
return vote_id;
}
public void setVote_id(int vote_id) {
this.vote_id = vote_id;
}
public int getVedeo_id() {
return vedeo_id;
}
public void setVedeo_id(int vedeo_id) {
this.vedeo_id = vedeo_id;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDiscount_type() {
return discount_type;
}
public void setDiscount_type(String discount_type) {
this.discount_type = discount_type;
}
public String getDiscount_exp() {
return discount_exp;
}
public void setDiscount_exp(String discount_exp) {
this.discount_exp = discount_exp;
}
public String getCreated_at() {
return created_at;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public String getUpdated_at() {
return updated_at;
}
public void setUpdated_at(String updated_at) {
this.updated_at = updated_at;
}
}
}
sudo
个文件,然后将/etc/hosts
更改为127.0.0.1 localhost
。
所以在127.0.0.1 *.localhost
修改/etc/nginx/sites-enabled/<environment>/<your_project_name>
密钥为server_name
。
重新加载nginx和网络服务。
<subdomain>.localhost
然后在网址栏尝试$ sudo service nginx reload
$ sudo service networking reload
。
它对我有用。
<强>更新强>
在我看来,更好的解决方案是创建一个虚拟服务器,只在子域不存在时才响应http://<subdomain>.localhost
,作为默认服务器(请记住,您只能定义一个服务器作为默认服务器)。
/etc/nginx/sites-enabled/development/default
确保server {
listen 80 default_server;
root /var/www/html/errors/404;
server_name *.localhost *.<host-name>;
location / {
index subdomain.html;
}
}
(通常位于nginx.conf
)包含/etc/nginx/nginx.conf
此虚拟服务器工作。如果没有,请将其放置,然后运行include /etc/nginx/sites-enabled/**/*;
。
在这种情况下,不必将$ sudo service nginx reload
放在*.localhost
中,而只放入/etc/hosts
。